Commit Graph

37 Commits

Author SHA1 Message Date
Brion Vibber
0e852def6a XMPP queued output & initial retooling of DB queue manager to support 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-21 22:40:35 -08:00
Evan Prodromou
8b2f6c01fb add inbox data class 2010-01-09 10:01:21 -08:00
Brion Vibber
aff78e5121 Cache fixes:
* 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-05 15:05:53 -08:00
Evan Prodromou
8f362e9956 user_id is a non-autoincrement pkey for user_location_prefs 2010-01-04 08:53:28 -10:00
Brion Vibber
e152bec282 Fix for saving user location preferences -- user_id field was marked as an auto-increment and wasn't getting saved with new inserts. 2009-12-29 11:46:10 -08:00
Evan Prodromou
29a1669c01 user_id is primary key for user_location_prefs 2009-12-28 14:43:14 -08:00
Evan Prodromou
c326824135 add user-location-prefs data objects 2009-12-28 13:59:03 -08:00
Evan Prodromou
2a1468ec8b Merge branch '0.9.x' into testing 2009-12-15 16:24:52 -05:00
Evan Prodromou
c9649f9321 reset executable bit on Notice.php and statusnet.ini 2009-12-11 10:23:36 -05:00
Evan Prodromou
da30890988 add repeat_of column to notice class 2009-12-11 10:22:56 -05:00
Evan Prodromou
e9b733e7f0 Merge branch '0.9.x' into testing 2009-12-11 09:55:47 -05:00
Evan Prodromou
dd098fee77 remove forward table from db scripts 2009-12-10 14:34:47 -05:00
Evan Prodromou
6bc6af667e fix exe flag 2009-12-08 15:43:34 -05:00
Evan Prodromou
0f1d0ab4d7 add DB_DataObject for forward table 2009-12-08 15:43:11 -05:00
Evan Prodromou
78fc9483d4 Merge branch '0.9.x' into testing 2009-12-08 14:43:21 -05:00
Craig Andrews
75cac0fd6b Added 'login' command that gives you a link that can be used to login to the website 2009-12-05 21:05:33 -05:00
Zach Copley
9dc888894b Merge branch 'master' into 0.9.x
* master: (67 commits)
  Ticket 2038: fix bad bug tracker link
  Fix regression in group posting: bug introduced in commit 1319002e15. Need to use actual profile object rather than an id on a variable that doesn't exist when checking blocks :D
  Log database errors when saving notice_inbox entries
  Drop the username from the log id for now; seems to trigger an error loop in some circumstances
  request id on logs... pid + random id per web request + username + method + url
  Add OpenID ini info back into statusnet.ini as a stopgap until we can
  Some changes to the OpenID DataObjects to make them emit the exact same
  OpenID plugin should set 'user_openid.display' as unique key
  Remove relationship: user_openid.user_id -> user.id. I don't think this
  Have OpenID plugin DataObjects emit their own .ini info
  Revert "Allow plugin DB_DataObject classes to not have to use the .ini file by overriding keys(), table(), and sequenceKey() for them"
  Catch and report exceptions from notice_to_omb_notice() instead of letting the OMB queue handler die.
  Fix regression in remote subscription; added hasRole() shadow method on Remote_profile.
  Fix fatal error on OMB subscription for first-timers
  Remove annoying log msg
  Drop error message on setlocale() failure; this is harmless, since we actually have a working locale set up.
  Catch uncaught exception
  Fixed bug where reply-sync bit wasn't getting saved
  Forgot to render the nav menu when on FB Connect login tab
  Facebook plugin no longer takes over Login and Connect settings nav menus
  ...

Conflicts:
	db/08to09_pg.sql
	db/statusnet_pg.sql
	locale/pt_BR/LC_MESSAGES/statusnet.mo
	plugins/Mapstraction/MapstractionPlugin.php
2009-11-30 10:28:58 -08:00
Zach Copley
261ee0264a Add OpenID ini info back into statusnet.ini as a stopgap until we can
get plugins to load ini info properly on status.net
2009-11-26 18:49:18 +00:00
Zach Copley
8acc1587b1 Revert "Allow plugin DB_DataObject classes to not have to use the .ini file by overriding keys(), table(), and sequenceKey() for them"
This reverts commit a373d07ae0.

Conflicts:

	classes/statusnet.ini
	lib/schema.php
	plugins/Authentication/AuthenticationPlugin.php
	plugins/OpenID/OpenIDPlugin.php
	plugins/UserFlag/UserFlagPlugin.php
2009-11-25 13:38:59 -08:00
Craig Andrews
e9b877a4a3 correct the primary key for login_token 2009-11-20 10:56:06 -05:00
Evan Prodromou
6a1afda259 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
Conflicts:
	classes/statusnet.ini
2009-11-17 06:25:07 -05:00
Craig Andrews
a373d07ae0 Allow plugin DB_DataObject classes to not have to use the .ini file by overriding keys(), table(), and sequenceKey() for them 2009-11-16 15:24:25 -05:00
Evan Prodromou
dd10e9729b fix exe flag after createTable 2009-11-16 16:05:22 +01:00
Evan Prodromou
4e00ce01a9 Rename user_role to profile_role
Renamed the user_role table to profile_role. Remote users can have a
role on the site; that 'role' may be negative (silenced or sandboxed).
2009-11-16 16:02:47 +01:00
Craig Andrews
ed690615de Added a User_username table that links the external username with a StatusNet user_id
Added EmailAuthenticationPlugin
Added ReverseUsernameAuthenticationPlugin
Changed the StartChangePassword and EndChangePassword events to take a user, instead of a nickname
User::allowed_nickname was declared non-static, but used as if it was static, so I made the declaration static
2009-11-12 20:12:36 -05:00
Craig Andrews
b9d40f723b Added 'login' command that gives you a link that can be used to login to the website 2009-11-02 18:40:49 -05:00
Craig Andrews
acaf07f6e8 Added an "Verify Your Identity" page to the OpenID provider 2009-10-30 13:21:37 -04:00
Evan Prodromou
b7a4437e79 flip x flag on generated files 2009-10-21 22:43:41 -04:00
Evan Prodromou
6fc5c934ed statusnet.ini update 2009-10-21 22:43:41 -04:00
Evan Prodromou
e559f82e86 flip exe bit on statusnet.ini 2009-09-08 13:07:21 -07:00
Evan Prodromou
35a78de93b changes to File 2009-08-27 14:53:16 -07:00
Evan Prodromou
f8afad03ad add data object class for user_role 2009-08-27 11:21:57 -07:00
Evan Prodromou
5d09b6b3f0 Merge branch '0.8.x' into 0.9.x
Conflicts:
	EVENTS.txt
	actions/finishremotesubscribe.php
	actions/postnotice.php
	actions/public.php
	actions/remotesubscribe.php
	actions/showstream.php
	actions/updateprofile.php
	actions/userauthorization.php
	classes/laconica.ini
	lib/common.php
	lib/oauthstore.php
	lib/omb.php
2009-08-27 11:16:45 -07:00
Evan Prodromou
c87e1de017 Rename Laconica to StatusNet 2009-08-25 17:56:10 -04:00
Evan Prodromou
eb6a60ef88 updates to Status_network 2009-06-15 08:54:52 -07:00
Evan Prodromou
23fd58b74c fix perms for classes/statusnet.ini 2009-06-14 21:53:29 -07:00
Evan Prodromou
60861760fc Host multiple sites with the same codebase
This is the beginning of the code for status.net and related status
farms. It will read basic information about a site from a shared,
central database and use the data stored there to switch on the
hostname.
2009-04-07 17:10:54 -04:00