Commit Graph

19 Commits

Author SHA1 Message Date
Brion Vibber c7507e7e9d XMPP queued output & initial retooling of DB queue manager to support non-Notice objects.
Queue handlers for XMPP individual & firehose output now send their XML stanzas
to another output queue instead of connecting directly to the chat server. This
lets us have as many general processing threads as we need, while all actual
XMPP input and output go through a single daemon with a single connection open.

This avoids problems with multiple connected resources:
* multiple windows shown in some chat clients (psi, gajim, kopete)
* extra load on server
* incoming message delivery forwarding issues

Database changes:
* queue_item drops 'notice_id' in favor of a 'frame' blob.
  This is based on Craig Andrews' work branch to generalize queues to take any
  object, but conservatively leaving out the serialization for now.
  Table updater (preserves any existing queued items) in db/rc3to09.sql

Code changes to watch out for:
* Queue handlers should now define a handle() method instead of handle_notice()
* QueueDaemon and XmppDaemon now share common i/o (IoMaster) and respawning
  thread management (RespawningDaemon) infrastructure.
* The polling XmppConfirmManager has been dropped, as the message is queued
  directly when saving IM settings.
* Enable $config['queue']['debug_memory'] to output current memory usage at
  each run through the event loop to watch for memory leaks

To do:
* Adapt XMPP i/o to component connection mode for multi-site support.
* XMPP input can also be broken out to a queue, which would allow the actual
  notice save etc to be handled by general queue threads.
* Make sure there are no problems with simply pushing serialized Notice objects
  to queues.
* Find a way to improve interactive performance of the database-backed queue
  handler; polling is pretty painful to XMPP.
* Possibly redo the way QueueHandlers are injected into a QueueManager. The
  grouping used to split out the XMPP output queue is a bit awkward.

Conflicts:

	scripts/xmppdaemon.php
2010-01-22 12:52:36 -08:00
Evan Prodromou b141f7aea5 Add user_location_prefs to upgrade script 2009-12-28 13:54:09 -08:00
Evan Prodromou 3d06431787 add repeat_of column to notice table 2009-12-11 10:20:32 -05:00
Evan Prodromou dd098fee77 remove forward table from db scripts 2009-12-10 14:34:47 -05:00
Evan Prodromou 5344b3fb4b add forward table to updates 2009-12-08 17:32:09 -05:00
Craig Andrews 75cac0fd6b Added 'login' command that gives you a link that can be used to login to the website 2009-12-05 21:05:33 -05:00
Evan Prodromou 224d82793c Revert "Added 'login' command that gives you a link that can be used to login to the website"
This reverts commit b9d40f723b.

Conflicts:

	actions/login.php
	classes/statusnet.ini
	db/08to09.sql
	db/08to09_pg.sql
	db/statusnet_pg.sql
	lib/command.php
	lib/commandinterpreter.php
2009-11-20 02:50:43 -08:00
Evan Prodromou bcb49b0000 bring the 08-to-09 SQL update script up-to-date 2009-11-17 19:13:09 -05:00
Brion Vibber 81fa515881 Fix index on notice for efficient querying of notice(s) by order for a profile.
Should resolve performance problem with Profile::getCurrentNotice()
2009-11-12 11:08:43 -08:00
Brion Vibber 737fe76347 Performance fix for subscription/subscriber lists based on feedback from ops.
Extended subscription table indexes for subscriber and subscribed to include the created field, which is used to sort for display. This lets us skip a filesort and do the join much more efficiently.
Alter table from 08to09.sql needs to be run manually (though no ill effects if you forget other than not getting the perf improvement).
2009-11-10 08:47:54 -08:00
Brion Vibber 9d0687b055 Adjusting indexes to make favorites query more efficient, based on feedback from ops.
fave_user_id_idx index changed from (user_id) to (user_id,modified), so the timestamp ordering can be done straight from the index while we're looking up the user's notices.
Added to 08to09.sql and 08to09_pg.sql; may need to be run manually by folks doing development.
(No harm if you don't update it, the favorites tab/rss feed will just stay inefficent.)
2009-11-10 08:23:24 -08:00
Craig Andrews b9d40f723b Added 'login' command that gives you a link that can be used to login to the website 2009-11-02 18:40:49 -05:00
Brenda Wallace 8689955e08 added missing parts to postgres update, and the config+user_role tables to both upgrade scripts 2009-08-29 09:48:30 +12:00
Craig Andrews d9e8dabaf4 Save the mimetype for oEmbed linked url 2009-08-26 14:53:52 -04:00
Evan Prodromou d50d24dcf4 update database to allow >140c in group descriptions 2009-08-21 06:33:21 -04:00
Evan Prodromou 2d6039fb69 Allow unlimited-size bios in profiles 2009-08-21 06:33:21 -04:00
Evan Prodromou 4ac0fe009f allow unlimited text in messages in DB 2009-08-21 06:33:21 -04:00
Evan Prodromou d94a4eae8a update database to allow large posts 2009-08-21 06:33:20 -04:00
Evan Prodromou 9e078c28b6 start upgrade script for 0.9.x 2009-08-04 06:07:32 -04:00