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...@a and b...@b are stored in two places at the same time. Servers A and B maintain their own copies of subscription state. For a...@a's subscripton to b...@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
