summaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)Author
2010-02-17Merge branch 'master' into testingBrion Vibber
2010-02-17Queues: redid the breakout control model so we can start up and subscribe to ↵Brion Vibber
queues without running through the complete site list, which is ok at 1k sites but too slow at 10k. All breakout queues that we're going to need to listen to now need to be explicitly listed in $config['queue']['breakout']. Until XMPP is moved to component model, this setting will let the individual processes work with their own queues: $config['queue']['breakout'][] = 'xmpp/xmppout/' . $config['site']['nickname'];
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-08Merge branch 'master' of git@gitorious.org:statusnet/mainline into testingBrion Vibber
2010-02-08Allow scripts/decache.php to blow out cache for objects that don't exist ↵Brion Vibber
(anymore). May miss keys other than the given or primary key, but should work for a lot of common cases where a bad entry's been removed from DB but lingers in cache.
2010-02-04Merge branch 'master' of gitorious.org:statusnet/mainline into testingBrion Vibber
2010-02-03Script to update profile URLsEvan Prodromou
2010-02-03clearcache.php column flag was conflicting with default flagEvan Prodromou
2010-02-03showcache.php column flag was conflicting with default flagEvan Prodromou
2010-02-03change 'sitetype' to 'siteplan' to use consistent languageEvan Prodromou
2010-02-02setconfig.php: list all current settings if no parameters givenBrion Vibber
2010-02-02Apply xopher's fix to add 'sitetype' parameter to setup_status_network.sh, ↵Brion Vibber
exposed to the email
2010-01-31Add a script to clear the cache for a given keyEvan Prodromou
Like showcache.php, clearcache.php clears the cache for a given key.
2010-01-29live fast, die young in bash scriptsEvan Prodromou
2010-01-28Log exceptions from queuedaemon.php if they're not already caughtBrion Vibber
2010-01-28Fixes for status_network db object .ini and tag setter scriptBrion Vibber
2010-01-28Add a script to set tags for sitesEvan Prodromou
2010-01-27Shuffle params on setup_status_network; adding fullname and pushing tags upBrion Vibber
2010-01-27add additional post-install shell script option for setup_status_network.sh ↵Brion Vibber
to do any other site-specific setup
2010-01-27Add scripts/sendemail.php to send email to a user's address. Updated ↵Brion Vibber
setup_status_network.sh to create a user with the site's nick, accept site tags, and send a mail to the user (if a template is set) Email and tag params added to the end: setup_status_net.sh mysite 'My Site' 'owner@example.com' '1user' (If multiple tags are needed, separate them with a pipe "|". Be sure to quote properly!) New parameters for setup.cfg need to be set: export PHPBASE=/var/www/statusnet export WILDCARD=example.net export MAILTEMPLATE=/etc/statusnet/newsite-mail.txt export MAILSUBJECT="Your new StatusNet site" $PHPBASE is the base dir for a callable StatusNet install, used to run command-line scripts for user setup. $WILDCARD is the wildcard domain, needed to build a full server name to pass into command-line scripts. $MAILTEMPLATE points to a file containing an e-mail message template. '$nickname', '$sitename', and '$userpass' can be used in the template for substitution. $MAILSUBJECT is the subject line for said email. To skip sending an email on creation, leave $MAILTEMPLATE blank or point to a non-existing file.
2010-01-26Control channel for queue daemons to request graceful shutdown, restart, or ↵Brion Vibber
update to listen to a newly added or reconfigured site. queuectl.php --update -s<site> queuectl.php --stop queuectl.php --restart Default control channel is /topic/statusnet-control. For external utilities to send a site update ping direct to the queue server, connect via Stomp and send a message formatted thus: update:<nickname> (Nickname here, *not* server hostname! The rest of the queues will be updated to use nicknames later.) Note that all currently-connected queue daemons will get these notifications, including both queuedaemon.php and xmppdaemon.php. (XMPP will ignore site update requests for sites that it's not handling.) Limitations: * only implemented for stomp queue manager so far * --update may not yet handle a changed server name properly * --restart won't reload PHP code files that were already loaded at startup. Still need to stop and restart the daemons from 'outside' when updating code base.
2010-01-25quick fix to console.php: don't save blank lines into readline historyBrion Vibber
2010-01-25drop now-unused --skip-xmpp and --xmpp-only options from queuedaemon.phpBrion Vibber
2010-01-21XMPP queued output & initial retooling of DB queue manager to support ↵Brion Vibber
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-21drop debug line from xmppdaemon.php, we're done debugging thatBrion Vibber
2010-01-19Extra debug instrumentation for xmppdaemonBrion Vibber
2010-01-15--xmpp-only hack for queuedaemon.php to run separate queue daemon with only ↵Brion Vibber
xmpp threads
2010-01-14temporary --skip-xmpp flag on queuedaemon.php, allows to run queue daemons ↵Brion Vibber
but skip subscription to xmpp-based queues (still working on making these behave gracefully when server is down)
2010-01-13actually use the user id instead of 0 ;)Brion Vibber
2010-01-13in case we have cached 'fake' inboxes, make sure we rebuild them running ↵Brion Vibber
initializeinbox.php
2010-01-13Gracefully skip missing user entries when initializing inboxes in bulkBrion Vibber
2010-01-13accept file for initializeinbox.phpEvan Prodromou
2010-01-13Update generation of YAML filesSiebrand Mazeland
* need lower case in some places * update target path Not in production yet at translatewiki.net - need some Translate extension code changes to get YAML config support for Gettext first.
2010-01-13add a script for initializing inboxesEvan Prodromou
2010-01-12Merge branch '0.9.x' into inblobEvan Prodromou
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-11Merge branch '0.9.x' into inblobEvan Prodromou
2010-01-11fix long options on deleteuser.phpBrion Vibber
2010-01-10Lots of tiny message changes.Siebrand Mazeland
* Mostly punctuation updates so that the same message is used consistently in all of StatusNet. * Some cases of "Title Case" removed, because that does not appear to be used consistently.
2010-01-09Merge branch 'inblob' of git@gitorious.org:~evan/statusnet/evans-mainline ↵Evan Prodromou
into inblob Conflicts: classes/Inbox.php classes/Notice.php classes/Notice_inbox.php
2010-01-09remove triminboxes.php; it's no longer usedEvan Prodromou
2010-01-09Revert "Replace Notice_inbox with Inbox"Evan Prodromou
We use Notice_inbox to transition to Inbox. This reverts commit 7640d3f07bad0710d69575efc7ceda115f24a60a.
2010-01-09Replace Notice_inbox with InboxEvan Prodromou
2010-01-08Add an IMAP daemon so StatusNet can process incoming user posts via ↵Craig Andrews
catch-all mailbox (in addition to the pre-existing script alias method)
2010-01-06suppress notice for undefined prompt variable when console.php is used from ↵Brion Vibber
non-interactive terminal
2010-01-05Add an RSSCloud queue handler daemonZach Copley
2010-01-04free some memory in createsim.phpEvan Prodromou
2010-01-04Merge branch 'batchlocation'Evan Prodromou
2009-12-31Script to update the location ID for usersEvan Prodromou
Since we added locations to the database, some users may have location strings in their profiles but not structured locations. This script updates the locations for single users or for all users.