summaryrefslogtreecommitdiff
path: root/classes
AgeCommit message (Collapse)Author
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-11Merge branch 'sessionidparam' into 0.9.xEvan Prodromou
Conflicts: lib/command.php
2010-01-10Merge branch 'master' into 0.9.xEvan Prodromou
Conflicts: classes/Memcached_DataObject.php
2010-01-10check before saving a thumbnailEvan Prodromou
2010-01-10check before inserting File_oembed and File_thumbnailEvan Prodromou
2010-01-10don't put Users with object IDs in the cache, and don't fetch themEvan Prodromou
2010-01-10always set site/server to hostname if it existsEvan Prodromou
2010-01-09allow hostname with SSLEvan Prodromou
2010-01-09use nickname, not sitename, in domain for SSLEvan Prodromou
2010-01-09correct superglobal variable nameEvan Prodromou
2010-01-09redirect to sitename.wildcard for SSLEvan Prodromou
2010-01-09Redirect to a one-time-password when ssl and regular server are differentEvan Prodromou
2010-01-07Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.xEvan Prodromou
2010-01-07Fixes to bugs where non-local messages were being wrong put in the public ↵Ciaran Gultnieks
timeline and public xmpp feed
2010-01-06fixup keytypes so it returns the types no matter what kind of class it isEvan Prodromou
2010-01-06Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.xEvan Prodromou
2010-01-06only encache new objects when insert was successfulEvan Prodromou
2010-01-06...and drop the unnecessary &reference from child class pkeyGet() overrides.Brion Vibber
2010-01-06Rearrange Memcached_DataObject::staticGet() to avoid "only variables can be ↵Brion Vibber
passed by reference" warnings when DB lookup fails and we return false. (We need to keep it returning a reference because the extlib parent class is stuck in PHP 4-land and uses references everywhere, including this function's return value. Yuck!) Also changed pkeyGet to drop the reference, since it doesn't have an upstream equivalent.
2010-01-06Fix for broken profile flag admin UI: delete stray flag entries when users ↵Brion Vibber
are deleted so broken entries don't litter the lookups. * added ProfileDeleteRelated event to match UserDeleteRelated, to allow plugins to add extra related tables on profile deletion * UserFlagPlugin: deleting flags when target profile is deleted * UserFlagPlugin: deleting flags when flagging user is deleted * UserFlagPlugin: fix for autoloader -- class names are case-insensitive. We may get lowercase class names coming in at times, such as when creating DB objects programatically from a table name. Note that any already-existing bogus entries need to be removed from the database: select * from user_flag_profile where (select id from profile where id=profile_id) is null; select * from user_flag_profile where (select id from user where id=user_id) is null;
2010-01-05encache on insert instead of decachingEvan Prodromou
2010-01-05Fix for overlong RT trimming: don't trim if textlimit is 0 (unlimited)Brion Vibber
2010-01-05Fix for overlong RT trimming: don't trim if textlimit is 0 (unlimited)Brion Vibber
2010-01-05Ticket 2135: trim overlong repeats with ellipsis rather than failing.Brion Vibber
In web interface and retweet/repeat API we show the original untrimmed text, but some back-compat API messages will still show the trimmed 'RT' version. This matches Twitter's behavior on overlong retweets, though we're outputting the RT version in more API results than they do.
2010-01-05Ticket 2135: trim overlong repeats with ellipsis rather than failing.Brion Vibber
In web interface and retweet/repeat API we show the original untrimmed text, but some back-compat API messages will still show the trimmed 'RT' version. This matches Twitter's behavior on overlong retweets, though we're outputting the RT version in more API results than they do.
2010-01-05Cache fixes:Brion Vibber
* We now cache negative lookups; clear them in Memcached_DataObject->insert() * Mark file.url as a unique key in statusnet.ini so its negative lookups are cleared properly (first save of a notice with a new URL was failing due to double-insert) * Now using serialization for default in-process cache instead of just saving objects; avoids potential corruption if you save an object to cache, change the original object, then fetch the same key from cache again
2010-01-05Require users to login to view attachments on private sitesCraig Andrews
Thank you jeff-themovie for this implementation!
2010-01-05Move Authorization and Authentication plugin structures into core, instead ↵Craig Andrews
of as plugins. This move makes sense as you can addPlugin('Authentication') for example - these are abstract classes designed to be implemented, not used directly.
2010-01-04Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.xEvan Prodromou
Conflicts: classes/Memcached_DataObject.php
2010-01-04Merge branch 'master' into 0.9.xEvan Prodromou
Conflicts: actions/publictagcloud.php classes/Memcached_DataObject.php
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-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.
2010-01-04cached id streams can be empty, compare against falseEvan Prodromou
2010-01-04carefully compare cached settings against false for ConfigEvan Prodromou
2010-01-04Memcached_DataObject stores empty values in the cacheEvan Prodromou
There's great value in knowing that something doesn't exist. We now cache this information, and carefully compare the results from cache as $results !== false instead of !empty($results), since some empty values (null, 0, empty array, empty string) are stored in the cache. Caching staticGet() and pkeyGet() now store DB misses in the cache, and cachedQuery() checks for empty results from the cache.
2010-01-04Stop caching unfindable keysEvan Prodromou
There were some problems with the automated cache/uncache system for data objects that made us cache unfindable keys (with null attributes and sometimes null names). Fixed those problems and refactored the encache() and decache() methods so they use a helper to find the cache keys to use.
2010-01-04user_id is a non-autoincrement pkey for user_location_prefsEvan Prodromou
2010-01-03Revert "use keys() instead of keyTypes() so plugin data object work"Evan Prodromou
This reverts commit ec380887f71a1eadc75bad0289f9a0dbee7f2913.
2010-01-03use keys() instead of keyTypes() so plugin data object workEvan Prodromou
2010-01-02Merge branch 'master' into 0.9.xEvan Prodromou
Conflicts: classes/Memcached_DataObject.php
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-02incorrectly used empty() instead of isset() for a variable that could be 0Evan 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-01Merge branch 'master' into 0.9.xEvan Prodromou
Conflicts: classes/Memcached_DataObject.php
2010-01-01add cleanup method to cleanup a single rowEvan Prodromou