Commit Graph

13 Commits

Author SHA1 Message Date
Brion Vibber ec145b73fc Major refactoring of queue handlers to support running multiple sites in one daemon.
Key changes:
* Initialization code moved from common.php to StatusNet class;
  can now switch configurations during runtime.
* As a consequence, configuration files must now be idempotent...
  Be careful with constant, function or class definitions.
* Control structure for daemons/QueueManager/QueueHandler has been refactored;
  the run loop is now managed by IoMaster run via scripts/queuedaemon.php
  IoManager subclasses are woken to handle socket input or polling, and may
  cover multiple sites.
* Plugins can implement notice queue handlers more easily by registering a
  QueueHandler class; no more need to add a daemon.

The new QueueDaemon runs from scripts/queuedaemon.php:

* This replaces most of the old *handler.php scripts; they've been refactored
  to the bare handler classes.
* Spawns multiple child processes to spread load; defaults to CPU count on
  Linux and Mac OS X systems, or override with --threads=N
* When multithreaded, child processes are automatically respawned on failure.
* Threads gracefully shut down and restart when passing a soft memory limit
  (defaults to 90% of memory_limit), limiting damage from memory leaks.
* Support for UDP-based monitoring: http://www.gitorious.org/snqmon

Rough control flow diagram:
QueueDaemon -> IoMaster -> IoManager
                           QueueManager [listen or poll] -> QueueHandler
                           XmppManager [ping & keepalive]
                           XmppConfirmManager [poll updates]

Todo:

* Respawning features not currently available running single-threaded.
* When running single-site, configuration changes aren't picked up.
* New sites or config changes affecting queue subscriptions are not yet
  handled without a daemon restart.
* SNMP monitoring output to integrate with general tools (nagios, ganglia)
* Convert XMPP confirmation message sends to use stomp queue instead of polling
* Convert xmppdaemon.php to IoManager?
* Convert Twitter status, friends import polling daemons to IoManager
* Clean up some error reporting and failure modes
* May need to adjust queue priorities for best perf in backlog/flood cases

Detailed code history available in my daemon-work branch:
http://www.gitorious.org/~brion/statusnet/brion-fixes/commits/daemon-work
2010-01-12 20:45:09 -08:00
Zach Copley 20af83d316 Add version info for Facebook, TwitterBridge and RSSCloud plugins 2010-01-08 00:09:23 -08:00
Brion Vibber 4b5e977a7b New _m() gettext wrapper with smart detection of plugin domains. Plugin base class registers your gettext files if present at initialization.
update_pot.sh replaced with update_po_templates.php which can do core, plugins, or all (default).
Top-level Makefile added to build .mo files for plugins as well as core.

As described on list:
http://lists.status.net/pipermail/statusnet-dev/2009-December/002869.html
2009-12-08 12:17:11 -08:00
Craig Andrews 4c8bed8ba0 Use inlineScript() everywhere inline scripts are written 2009-12-04 19:41:51 -05:00
Zach Copley f12972a50f Facebook plugin no longer takes over Login and Connect settings nav menus 2009-11-25 00:43:20 +00:00
Zach Copley 4bace8f1a5 Add routing rules for FB app in front of other rules 2009-11-20 11:13:24 +00:00
Brion Vibber 088081675f Revert "Remove more contractions"
This reverts commit 5ab709b739.

Missed this one yesterday...
2009-11-09 20:01:46 +01:00
Siebrand Mazeland 5ab709b739 Remove more contractions
* doesn't
* won't
* isn't
* don't
2009-11-08 23:32:15 +01:00
Brion Vibber fd650715fa Warning cleanup: drop reference on router parameter to RouterInitialized event handlers.
We don't (and don't need to) pass a reference here, and the mix can trigger warnings.
2009-10-29 13:55:37 -04:00
Zach Copley 62ba25f53a Some phpcs cleanup 2009-10-23 23:05:23 +00:00
Zach Copley 6a2185a26b Make paths and class loading work right 2009-10-21 22:02:10 +00:00
Zach Copley aa58e8a738 Combine Facebook and Facebook Connect plugins into one big plugin 2009-10-21 01:17:31 +00:00
Zach Copley 78e5a5980a Extract out Facebook app stuff into a plugin 2009-10-20 16:32:30 -07:00