announcement seqnums: respond to state-rollback #1933

Open
opened 2013-03-19 07:44:42 +00:00 by warner · 0 comments
warner commented 2013-03-19 07:44:42 +00:00
Owner

In the #1767 sequence-number-based introducer announcements fix, we deferred a few TODO items:

  1. if a publisher receives its own announcement (same pubkey, valid signature) with a higher seqnum, or with an equal seqnum but different contents, immediately raise its seqnum to be one higher than the received value and re-publish all announcements
  2. if a subscriber receives an annoucement that is older (lower seqnum or same-seqnum-different-contents) than what it has remembered for that index (index=pubkey+servicename), send the remembered announcement back to the publisher (so they can learn about their rollback and perform thing 1 above)

The introducer server (while we still have one, e.g. until distributed/gossip-based introduction happens) is the best place to notice the rollback and tell the publisher, perhaps in the return value from the remote_publish_v2() method. Other introducer clients should do the same thing, but all they can do is publish the stored announcement on the same channel (service name) as the original, which the publisher may not be listening to (like a storage server who doesn't subscribe to "storage" because they don't care).

In the #1767 sequence-number-based introducer announcements fix, we deferred a few TODO items: 1. if a publisher receives its own announcement (same pubkey, valid signature) with a higher seqnum, or with an equal seqnum but different contents, immediately raise its seqnum to be one higher than the received value and re-publish all announcements 2. if a subscriber receives an annoucement that is older (lower seqnum or same-seqnum-different-contents) than what it has remembered for that index (index=pubkey+servicename), send the remembered announcement back to the publisher (so they can learn about their rollback and perform thing 1 above) The introducer server (while we still have one, e.g. until distributed/gossip-based introduction happens) is the best place to notice the rollback and tell the publisher, perhaps in the return value from the `remote_publish_v2()` method. Other introducer clients should do the same thing, but all they can do is publish the stored announcement on the same channel (service name) as the original, which the publisher may not be listening to (like a storage server who doesn't subscribe to "storage" because they don't care).
tahoe-lafs added the
code-network
normal
enhancement
1.9.2
labels 2013-03-19 07:44:42 +00:00
tahoe-lafs added this to the undecided milestone 2013-03-19 07:44:42 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: tahoe-lafs/trac-2024-07-25#1933
No description provided.