Commit Graph

21 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 922db17259 add an inbox blob table 2010-01-09 10:01:20 -08:00
Evan Prodromou 8d4e617d4e add table user_location_prefs 2009-12-28 13:53:28 -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 add126bc6c add forward table 2009-12-08 14:56:11 -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 4e00ce01a9 Rename user_role to profile_role
Renamed the user_role table to profile_role. Remote users can have a
role on the site; that 'role' may be negative (silenced or sandboxed).
2009-11-16 16:02:47 +01: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
Evan Prodromou 3b3d861b93 Revert "lat,lon -> lat,long"
This reverts commit 61d948cffee0aff4fd7853421ec0849458ea34c9.
2009-10-21 22:43:40 -04:00
Evan Prodromou 61826169de lat,lon -> lat,long 2009-10-21 22:43:40 -04:00
Evan Prodromou 3d772d24e7 add location-related tables and columns 2009-10-21 22:43:40 -04:00
Evan Prodromou f65baaaa4f change DB so OpenIDPlugin manages OpenID tables 2009-10-01 15:43:57 -04:00
Evan Prodromou a08c76a434 Merge branch '0.9.x' of git@gitorious.org:laconica/mainline into 0.9.x
Conflicts:
	classes/laconica.ini
2009-08-27 14:52:32 -07:00
Evan Prodromou 9f097913a6 add table for user roles 2009-08-27 11:18:10 -07:00
Evan Prodromou 5d09b6b3f0 Merge branch '0.8.x' into 0.9.x
Conflicts:
	EVENTS.txt
	actions/finishremotesubscribe.php
	actions/postnotice.php
	actions/public.php
	actions/remotesubscribe.php
	actions/showstream.php
	actions/updateprofile.php
	actions/userauthorization.php
	classes/laconica.ini
	lib/common.php
	lib/oauthstore.php
	lib/omb.php
2009-08-27 11:16:45 -07:00
Evan Prodromou c87e1de017 Rename Laconica to StatusNet 2009-08-25 17:56:10 -04:00