[Standards] Inconsistent Subscriptions in XMPP

Pavel Simerda pavlix at pavlix.net
Tue Feb 24 00:49:50 UTC 2009


There are several cases when subscription databases in XMPP are
inconsistent.

You may view subscription information as a global distributed database.
Subscription state between two JIDs, for example a at A and b at B are stored
in two places at the same time. Servers A and B maintain their own
copies of subscription state.

For a at A's subscripton to b at B, server B holds the authoritative record,
while server A has a non-authoritative copy. I believe we need a
mechanism to automatically check consistency of these records and fix
any inconsistency to ensure that:

* If the authoritative information changed without notification to an
  interested party, the interested party should discover it as soon as
  possible.

* The same for nonexistant users.

Inconsistencies occur when:

* The interested server is down while the changes occur.

* A notification was lost.
  
* A domain is moved to another server without copying the
  database (the subscriptions must be re-created manually)

* Database is restored from a backup due to data corruption.

Possible approaches:

* Server would monitor suspicious stanzas (e.g. messages and presence
  from an offline resource) and check the subscription state.

What with the roster items that are inconsistent?

* Mark as inconsistent, let the client present it to the user to take
  action.

* Auto-repair and thus maintain consistency

Looking forward to all feedback.

Pavel



-- 

Freelance consultant and trainer
in networking, communications and security.

Web: http://www.pavlix.net/
Jabber, Mail: pavlix(at)pavlix.net
OpenID: pavlix.net



More information about the Standards mailing list