summaryrefslogtreecommitdiff
path: root/classes/Memcached_DataObject.php
AgeCommit message (Collapse)Author
2010-04-07Merge branch '0.9.x' into 1.0.xEvan Prodromou
2010-04-07Merge branch 'master' into 0.9.xEvan Prodromou
2010-04-07show PEAR_Error message, not the objectEvan Prodromou
2010-03-29Merge branch '0.9.x' into 1.0.xBrion Vibber
2010-03-29Add $config['db']['annotate_queries'] option to include caller ID comments ↵Brion Vibber
into queries. Comment can then be seen in process list, slow query logs on the server, aiding in tracking down unexpected slow queries. SELECT /* queuedaemon.php Ostatus_profile->processPost */ * FROM notice WHERE ( notice.uri = 'http://stormcloud.local/mublog2/notice/479' ) INSERT /* POST Notice::saveNew */ INTO notice (profile_id , content ....
2010-03-24Avoid notice when reporting DB errors for objects that don't have an 'id' fieldBrion Vibber
2010-02-24Add class and (if present) id to DB_DataObject error exceptions; often ↵Brion Vibber
they're VERRRRRY vague, and it helps to know what type of item is failing!
2010-02-16Merge branch 'master' into testingBrion Vibber
Conflicts: lib/stompqueuemanager.php
2010-02-16Stomp queue restructuring for mass scalability:Brion Vibber
- Multiplexing queues into groups and for multiple sites. - Sharing vs breakout configurable per site and per queue via $config['queue']['breakout'] - Detect how many times a message is redelivered, discard if it's killed too many daemons - count configurable with $config['queue']['max_retries'] - can dump the items to files in $config['queue']['dead_letter_dir'] Queue daemon memory & resource leak fixes: - avoid unnecessary reconnections to memcached server (switch persistent connections back in on second initialization, assuming it's child process) - monkey-patch for leaky .ini loads in DB_DataObject::databaseStructure() - was leaking 200k per active switch - applied leak fixes to Status_network as well, using intermediate base Safe_DataObject for both it and Memcache_DataObject Misc queue fixes: - correct handling of child processes exiting due to signal termination instead of regular exit - shutdown instead of infinite respawn loop if we're already past the soft memory limit at startup - Added --all option for xmppdaemon... still opens one xmpp connection per site that has xmpp active Cache updates: - add Cache::increment() method with native support for memcached atomic increment
2010-02-05Don't spew warnings on usage of MEMCACHE_COMPRESSED constant when memcache ↵Brion Vibber
PHP extension is not present. Switched to a locally-defined Cache::COMPRESSED, translating that to MEMCACHE_COMPRESSED in the plugin.
2010-01-29add simple cache getter/setter static functions to Memcached_DataObjectEvan Prodromou
2010-01-28hide most DB_DataObject errorsEvan Prodromou
2010-01-28Merge branch 'master' of git@gitorious.org:statusnet/mainlineEvan Prodromou
2010-01-28update mysqltimestamps on insert and updateEvan Prodromou
2010-01-27Don't preemptively close existing DB connections for web views (needed to ↵Brion Vibber
keep # of conns from going insane on multi-site queue daemons, so just doing for CLI) May, or may not, help with mystery session problems
2010-01-25Merge branch 'master' into testingEvan Prodromou
Conflicts: lib/queuemanager.php
2010-01-25Offload inbox updates to a queue handler to speed up posting onlineEvan Prodromou
Moved much of the writing that happens when posting a notice to a new queuehandler, distribqueuehandler. This updates tags, groups, replies and inboxes at queue time (or at Web time, if queues are disabled). To make this work well, I had to break up the monolithic Notice::blowCaches() and make cache blowing happen closer to where data is updated. Squashed commit of the following: commit 5257626c62750ac4ac1db0ce2b71410c5711cfa3 Author: Evan Prodromou <evan@status.net> Date: Mon Jan 25 14:56:41 2010 -0500 slightly better handling of blowing tag memory cache commit 8a22a3cdf6ec28685da129a0313e7b2a0837c9ef Author: Evan Prodromou <evan@status.net> Date: Mon Jan 25 01:42:56 2010 -0500 change 'distribute' to 'distrib' so not too long for dbqueue commit 7a063315b0f7fad27cb6fbd2bdd74e253af83e4f Author: Evan Prodromou <evan@status.net> Date: Mon Jan 25 01:39:15 2010 -0500 change handle_notice() to handle() in distributqueuehandler commit 1a39ccd28b9994137d7bfd21bb4f230546938e77 Author: Evan Prodromou <evan@status.net> Date: Mon Jan 25 16:05:25 2010 -0500 error with queuemanager commit e6b3bb93f305cfd2de71a6340b8aa6fb890049b7 Author: Evan Prodromou <evan@status.net> Date: Mon Jan 25 01:11:34 2010 -0500 Blow memcache at different point rather than one big function for Notice class commit 94d557cdc016187d1d0647ae1794cd94d6fb8ac8 Author: Evan Prodromou <evan@status.net> Date: Mon Jan 25 00:48:44 2010 -0500 Blow memcache at different point rather than one big function for Notice class commit 1c781dd08c88a35dafc5c01230b4872fd6b95182 Author: Evan Prodromou <evan@status.net> Date: Wed Jan 20 08:54:18 2010 -0500 move broadcasting and distributing to new queuehandler commit da3e46d26b84e4f028f34a13fd2ee373e4c1b954 Author: Evan Prodromou <evan@status.net> Date: Wed Jan 20 08:53:12 2010 -0500 Move distribution of notices to new distribute queue handler
2010-01-24Recover caching logic lost in bad mergeEvan Prodromou
I made a bad merge on Jan 10th from master to 0.9.x. This lost a number of memcache enhancements made on the 0.9.x branch. I've been able to re-do the manual merge, and this represents the changes. Most of them are related to caching on insert.
2010-01-22Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testingEvan Prodromou
2010-01-22Memcached_DataObject unnecessarily require_once'd itselfEvan Prodromou
2010-01-21Option to log slow db queries or all db queriesBrion Vibber
$config['db']['log_queries'] = true; // all $config['db']['log_slow_queries'] = 10; // queries taking > 10 seconds
2010-01-12Major refactoring of queue handlers to support running multiple sites in one ↵Brion Vibber
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-12Avoid spewing warnings about returning by reference on memcached cache ↵Brion Vibber
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.
2010-01-11Regression fix: don't spew notices to log every time we get a non-cached ↵Brion Vibber
user object
2010-01-10don't put Users with object IDs in the cache, and don't fetch themEvan Prodromou
2010-01-04Exclude process-specific link & result cache references from serialized ↵Brion Vibber
Memcached_Data_Object instances. Should fix seemingly-random bugs due to destructor free()ing local resources by mistake. cherry-pick from 0.9.x
2010-01-04Revert "Take Memcached_DataObject destructor back out to check whether it ↵Brion Vibber
might be causing some under-the-hood problems." This reverts commit 89cca01259d71f3da961ef64def3647f86a01567.
2010-01-02return false from Memcached_DataObject::staticGet() on not found, like ↵Evan Prodromou
DB_DataObject
2010-01-02change harmless check of to check of in Memcached_DataObjectEvan Prodromou
2010-01-01Merge branch 'master' of git@gitorious.org:statusnet/mainlineEvan Prodromou
2010-01-01Revert "add cleanup method to cleanup a single row"Evan Prodromou
This reverts commit b0527801d9c2b84408bbfdf82bbdc5b778f72cfc.
2010-01-01add cleanup method to cleanup a single rowEvan Prodromou
2010-01-01stop using DB_DataObject's staticGet() which cachesEvan Prodromou
2009-12-30Take Memcached_DataObject destructor back out to check whether it might be ↵Brion Vibber
causing some under-the-hood problems.
2009-12-30Revert debugging codeBrion Vibber
2009-12-30subbug debug info to check on free orderingBrion Vibber
2009-12-22Merge branch 'testing'Evan Prodromou
2009-12-15call DB_DataObject::__destruct() if it existsEvan Prodromou
2009-12-15take out DB_DataObject destructorEvan Prodromou
2009-12-14Add destructor on Memcached_DataObject to free DB_DataObject's global ↵Brion Vibber
storage for an object when that object itself is destroyed. Reduces some, but not all, memory leakage for long-running processes.
2009-12-11Debug check to track down live error -- wrong data type sometimes being sent ↵Brion Vibber
down to Memcached_DataObject::cacheKey() via various fetch functions, need a backtrace to track it down.
2009-11-10Bringing Sphinx search support up to code: broken out to a plugin, now ↵Brion Vibber
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.
2009-08-26define LACONICA and accept LACONICA for backwards compatibilityEvan Prodromou
2009-08-25change LACONICA to STATUSNETEvan Prodromou
2009-08-25a distributed -> the distributedEvan Prodromou
2009-08-25change Laconica and Control Yourself to StatusNet in PHP filesEvan Prodromou
2009-07-27better check for existing DB connection runs SET NAMES UTF8 lessEvan Prodromou
2009-07-05Revert "Merge branch '0.8.x' into cachenonexistent"Evan Prodromou
This reverts commit e21d2cfdb5f259a07d7af0e3c7f5421315ed2710.
2009-07-05cache failure to find in memcachedEvan Prodromou
2009-06-21Add like for searchEvan Prodromou