Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mailbox server should sort/deduplicate messages #122

Open
warner opened this issue Dec 26, 2016 · 1 comment
Open

mailbox server should sort/deduplicate messages #122

warner opened this issue Dec 26, 2016 · 1 comment

Comments

@warner
Copy link
Collaborator

warner commented Dec 26, 2016

As mentioned in #121, to protect 0.9.0 (and older) clients which cannot tolerate duplicate peer messages, the rendezvous server should filter these out. Basically it should ignore anything but a single message per (side, phase) pair.

We'll need to deploy this to the server before we can ship a client that (via #42 reconnection/ack races) might post duplicate copies of any message to the rendezvous server.

@warner
Copy link
Collaborator Author

warner commented Feb 23, 2018

In addition to deduplication, I think I also want the server (now renamed as the "mailbox server") to retain ordering of messages. This will make the new Dilation protocol easier to implement. We don't need any particular ordering across connections, but every message coming from the same "side" value should be delivered in the same order as the server received them.

From the server side, this will require a sequence number to be recorded with each mesage. I don't know what would be the best way to manage this seqnum: should there be an extra DB table with a single integer, which gets read/updated in each message-adding transaction? Or does SQLite have an implicit row number that is guaranteed to be incrementing and can be read in normal queries?

@warner warner changed the title rendezvous server should deduplicate messages mailbox server should sort/deduplicate messages Feb 23, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant