Commit Graph

7885 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
Brion Vibber
99866a459b Fix for stuck queue messages: wrap processing in stomp transactions so our lack of an ACK if PHP dies actually triggers redelivery.
Previously, messages once delivered would just get stuck in the queue seemingly forever if they never got ACKed.
Note this could lead to partial duplication, for instance if the OMB or Twitter queue handlers die after 1/2 of the outgoing sends.

Recommendations:
* catch exceptions more aggressively within queue handlers (so only PHP fatal errors are likely to kill in the middle)
* for processing that involves sending to multiple clients, consider a second queue similar to the XMPP output, eg for OMB:
 - first queue gets delivery list and builds message data, enqueueing it for each target address
 - second queue can handle each individual outgoing message (and attempt redelivery etc separately)

This would also protect better against a recurring error preventing delivery in the second part, and could spread out any slow sends over multiple threads.
2010-01-22 12:35:05 -08:00
Sarven Capadisli
8bf2a9046b Fixed innerHTML problem in IE7 and 8 for badge script 2010-01-22 21:08:51 +01:00
Evan Prodromou
d25bd9b292 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-22 14:19:08 -05:00
Evan Prodromou
c8bc598cfd Merge branch 'testing' into 0.9.x 2010-01-22 14:18:43 -05:00
Evan Prodromou
e666433eb4 Merge branch 'master' into 0.9.x 2010-01-22 14:18:40 -05:00
Evan Prodromou
29d83c8ca9 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-01-22 14:18:21 -05:00
Evan Prodromou
104d300799 do actual language negotiation for help docs 2010-01-22 14:13:28 -05:00
Evan Prodromou
9f815c968f restructure doc.php for new use 2010-01-22 13:53:53 -05:00
Evan Prodromou
df9b780706 action/doc.php is PHPCS clean 2010-01-22 13:53:53 -05:00
Sarven Capadisli
00547ca898 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-22 19:19:02 +01:00
Sarven Capadisli
c9aafe2d4f Fixed innerHTML problem in IE7 and 8 for badge script 2010-01-22 19:18:14 +01:00
Eric Helgeson
b7940ef39f Fix unqueuemanager to work with new Queue layout pushed in 0e852def6a
"* Queue handlers should now define a handle() method instead of handle_notice()"

And Queue managers should call handle() :)
2010-01-22 11:02:23 -05:00
Evan Prodromou
a3e484a0e8 Memcached_DataObject unnecessarily require_once'd itself 2010-01-22 10:46:11 -05:00
Craig Andrews
7be5e7e524 stupid mistake... let's not talk about this. 2010-01-22 10:40:21 -05:00
Craig Andrews
672126968f Updated some references to the long gnone "isEnclosure" function to the new "getEnclosure" 2010-01-22 10:12:26 -05:00
Brion Vibber
0e852def6a 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.
2010-01-21 22:40:35 -08:00
Brion Vibber
26fdf0c9d2 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.
2010-01-21 16:42:50 -08:00
Brion Vibber
d412df18f7 Merge branch 'testing' into 0.9.x 2010-01-21 16:34:49 -08:00
Brion Vibber
0bb23e6fd7 drop debug line from xmppdaemon.php, we're done debugging that 2010-01-21 16:34:26 -08:00
Brion Vibber
c9c7bb3234 Merge commit 'origin/testing' into 0.9.x 2010-01-21 16:33:11 -08:00
Brion Vibber
4b0f953ccf Quick hack to avoid breaking with geonames off when there's some old cookie state. This code's a little rough and tumble; any breakage halts JS execution and leaves the spinner going and no message submitted. 2010-01-21 16:30:03 -08:00
Siebrand Mazeland
dcba613322 Localisation updates for !StatusNet from !translatewiki.net !sntrans 2010-01-21 23:45:09 +01:00
Zach Copley
308442407e - Moved checking for group aliases and redirection to prepare()
- phpcs cleanup
- add @macno to the list of authors
2010-01-21 11:37:20 -08:00
Brion Vibber
8dafe09ab2 Option to log slow db queries or all db queries
$config['db']['log_queries'] = true; // all
$config['db']['log_slow_queries'] = 10; // queries taking > 10 seconds
2010-01-21 11:07:52 -08:00
Michele
383703d170 if the id is an alias we redirect using group_id 2010-01-21 10:39:07 -08:00
Evan Prodromou
1d64ba6602 Unimplement retweeted_by_me API action until we have a more efficient query 2010-01-21 11:38:08 -05:00
Evan Prodromou
e5eb95ab59 retweet API methods are readonly 2010-01-21 11:32:01 -05:00
Sarven Capadisli
373206ac00 Event hooks for before and after site_notice 2010-01-21 16:49:49 +01:00
Sarven Capadisli
d4fcc8777f Removed mobile stylesheet from core output. If Mobile support is
seeked, MobileProfile plugin should be used.
2010-01-21 13:23:04 +01:00
Rajat Upadhyaya
6e405facca Fix to update user's fullname & homepage only if requested. 2010-01-21 09:27:00 +05:30
Zach Copley
fd276ff9e7 Add Start/EndSetApiUser events when setting API user via OAuth 2010-01-20 18:01:07 -08:00
Michele
05156b708a HTTP auth provided is evaluated even if it's not required 2010-01-20 17:55:37 -08:00
Evan Prodromou
c63832f7bf add PubSubHubBub and RSSCloud to list of default plugins 2010-01-20 17:58:23 -05:00
Evan Prodromou
a254947a47 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-20 17:55:03 -05:00
Evan Prodromou
4175ec7c6e update changes in README 2010-01-20 17:49:13 -05:00
Evan Prodromou
9e3013c6b6 mark retweet api actions read-only where applicable 2010-01-20 17:00:42 -05:00
Evan Prodromou
10f21e1f41 add class and function doc comments to PuSH plugin 2010-01-20 16:37:41 -05:00
Evan Prodromou
0167ff6d27 whitespace changes to make phpcs happy for PuSH plugin 2010-01-20 16:29:11 -05:00
Evan Prodromou
1d37a6c428 correctly get replies for a notice in PuSH plugin 2010-01-20 16:16:22 -05:00
Evan Prodromou
365b0b1e14 use standard plugin configuration for PubSubHubBub 2010-01-20 16:13:52 -05:00
Evan Prodromou
7679f058ef Revert "DEBUG HACK: error checking for xml_parse in XMPPHP input stream"
This reverts commit 906450e2f5.

1) It was a quick debug hack 2) it doesn't meet the requirements
for changing extlib/ libraries
2010-01-20 15:56:24 -05:00
Evan Prodromou
2a3cb86e29 Merge branch 'master' of git@gitorious.org:statusnet/mainline 2010-01-20 15:51:55 -05:00
Evan Prodromou
dbccebb14b update friends, not user, timeline for recipients of notice in PuSH plugin 2010-01-20 15:43:24 -05:00
Sarven Capadisli
6815ddafe0 Better alignment for notice options in MobileProfile 2010-01-20 18:50:48 +01:00
Sarven Capadisli
b87c80e0a9 Updated notice item view where a) notice text no longer wraps around
(under author's photo) b) supplemental notice content and options will
start right under notice text.
2010-01-20 18:32:24 +01:00
Brion Vibber
906450e2f5 DEBUG HACK: error checking for xml_parse in XMPPHP input stream 2010-01-20 08:37:58 -08:00
Siebrand Mazeland
b0be2da0ca Localisation updates for !StatusNet from !translatewiki.net !sntrans 2010-01-20 00:58:11 +01:00
Brion Vibber
71df23642c Extra debug instrumentation for xmppdaemon 2010-01-19 12:26:59 -08:00
Evan Prodromou
dd0a99f58a Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-19 00:32:05 -05:00