Age | Commit message (Collapse) | Author |
|
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
|
|
misses by setting a var and returning it instead of trying to return false directly.
This hacky workaround is brought to you by DB_DataObject's PHP 4 roots.
|
|
user object
|
|
|
|
Memcached_Data_Object instances.
Should fix seemingly-random bugs due to destructor free()ing local resources by mistake.
cherry-pick from 0.9.x
|
|
might be causing some under-the-hood problems."
This reverts commit 89cca01259d71f3da961ef64def3647f86a01567.
|
|
DB_DataObject
|
|
|
|
|
|
This reverts commit b0527801d9c2b84408bbfdf82bbdc5b778f72cfc.
|
|
|
|
|
|
causing some under-the-hood problems.
|
|
|
|
|
|
|
|
|
|
|
|
storage for an object when that object itself is destroyed.
Reduces some, but not all, memory leakage for long-running processes.
|
|
down to Memcached_DataObject::cacheKey() via various fetch functions, need a backtrace to track it down.
|
|
supports multiple sites on a single server.
Upgrade notes:
* Index names have changed from hardcoded 'Identica_people' and 'Identica_notices' to use the database name and actual table names. Must reindex.
New events:
* GetSearchEngine to override default search engine class selection from plugins
New scripts:
* gen_config.php generates a sphinx.conf from database configuration (with theoretical support for status_network table, but it doesn't seem to be cleanly queriable right now without knowing the db setup info for that. Needs generalized support.)
* Replaced old sphinx-indexer.sh and sphinx-cron.sh with index_update.php
Other fixes:
* sphinx.conf.sample better matches our live config, skipping unused stopword list and using a more realistic indexer memory limit
Further notes:
* Probably doesn't work right with PostgreSQL yet; Sphinx can pull from PG but the extraction queries currently look like they use some MySQL-specific functions.
|
|
|
|
|
|
|
|
|
|
|
|
This reverts commit e21d2cfdb5f259a07d7af0e3c7f5421315ed2710.
|
|
|
|
|
|
|
|
|
|
|
|
PHP doesn't get the info about the charset of the connection if
you use SET NAMES. So, we use the appropriate PHP function instead.
|
|
|
|
correctly""
This reverts commit 86770ccde7914219a0a572ced6dd21fa65566e1d.
|
|
This reverts commit 84072aa5cf6124d59a06a7f0a7945c00ee2836da.
This commit caused grievous harm to old notices on identi.ca.
Reverting until we figure out how to convert the old notices.
|
|
|
|
|
|
|
|
|
|
|
|
Another huge change, for PEAR code standards compliance. Function
headers have to be in K&R style (opening brace on its own line),
instead of having the opening brace on the same line as the function
and parameters. So, a little perl magic found all the function
definitions and move the opening brace to the next line (properly
indented... usually).
darcs-hash:20081223193323-84dde-a28e36ecc66672c783c2842d12fc11043c13ab28.gz
|
|
Another global search-and-replace update. Here, I've replaced the PHP
keyword 'NULL' with its lowercase version. This is another PEAR code
standards change.
darcs-hash:20081223192129-84dde-4a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz
|
|
The PEAR coding standards decree: no tabs, but indent by four spaces.
I've done a global search-and-replace on all tabs, replacing them by
four spaces. This is a huge change, but it will go a long way to
getting us towards phpcs-compliance. And that means better code
readability, and that means more participation.
darcs-hash:20081223191907-84dde-21e8efe210e6d5d54e935a22d0cee5c7bbfc007d.gz
|
|
darcs-hash:20081210233503-84dde-ae7e4acd0d5e42d6d743b545688ad4ad51bc5014.gz
|
|
darcs-hash:20081123201616-099f7-54ac0134e38e145b99a81336ae0b51a8ecd560a8.gz
|
|
darcs-hash:20081120215041-099f7-db396a60755d551099122b58634b7550d5606d88.gz
|
|
darcs-hash:20081002144715-5ed1f-97c8362c4fb4f6a761250b68e2f3311bcc5cba4f.gz
|
|
darcs-hash:20080930130844-5ed1f-217eb0d62fcac4a287ef3e3f213f2ac6bbc70778.gz
|
|
darcs-hash:20080927123507-5ed1f-57bc3843352007ae47689a94483d315984276b45.gz
|