Changes

Np1sec/incremental consistency

859 bytes added, 9 years ago
/* Consistency */ give a summary of the overall consistency strategy
== Consistency ==
When We consider two cases: (a) reaching consistency for arbitrary messages during the course of a conversation, and (b) reaching consistency when a user ''u'' leaves. Case (b) may be viewed as a special instance of case (a) plus the additional premise that ''u'' must reach consistency as soon as possible (because they want to leave), and that they don't care about reaching consistency for any subsequent messages that they might receive after their final "farewell" message. Case '''(a)''': when a member ''u'' accepts a non-explicit-ack message ''m'' at time ''t'': * if u did not send m, and they have not acked m by t+ACK_GRACE_INTERVAL, they should send an explicit-ack* if m is not fully-acked (from their POV) by t+(2*BROADCAST_LATENCY)+ACK_GRACE_INTERVAL then issue a local UI warning. Cancel the warning if/when full-ack is reached later. Case '''(b)''': when a member ''u '' wants to part, they send a "farewell" message ''m'':
* Everyone should explicit-ack this message ASAP
* TBD: need to think about simultaneous parts
When a member u accepts a non-explicit-ack message m at time t: * if Messages that others send to ''u did '' that are echoed back after "farewell" will not send mbe acked by ''u'', and they have therefore should not be shown as "seen/acked m by t+ACK_GRACE_INTERVALu". However, ''u'' may still read them in theory, since they were encrypted to ''u''. Communicating this meaning should send an explicit-ack* if m is not fully-acked (from their POV) be already covered by t+the same thing as for case (2*BROADCAST_LATENCY)+ACK_GRACE_INTERVAL then issue a local UI warning. Cancel the warning if/when full-ack is reached later), though.
=== Parameters and properties ===
42
edits