Scenarios - grantr/shortbus GitHub Wiki

Double simultaneous publish

Three peers, A, B, C are all at sequence 0.
Coordinator 1 and coordinator 2 publish message 1 and message 2 simultaneously.
A and B get message 1 first, then message 2.
C gets message 2 first, then message 1.

Coordinator 1 gets replies A1 and B1 first and their hashes agree. It returns success. 
Reply C1 comes later but is ignored because it doesn't match A1 and B1.
Coordinator 2 gets C2 first, then B2. The hashes don't match so it waits until A2 arrives.
Since B2 and A2 hashes match, the C2 result is discarded and the coordinator returns success.

Triple simultaneous publish

Three peers, A, B, C are all at sequence 0.
Coordinator 1, coordinator 2, and coordinator 3 publish message 1,
message 2, and message 3 simultaneously.

A gets message 1, then message 2, then message 3.
B gets message 2, then message 3, then message 1.
C gets message 3, then message 1, then message 2.

Since there is no quorum for any of these message sequences, it is likely all 3 of these 
messages will be failures. This kind of usage pattern (high throughput on >=N coordinators
for the same stream) would seem to be contraindicated.

It's possible some kind of eager repair process could happen if peers receive conflicting
publishes. Would need to examine the timing, but if a peer receives a publish from another
peer that agrees with its existing hash but is a different message than the one it's 
working on and the peer has not already published that write, it could retry its work, 
maybe after some delay.