byzhang / signal-collect

Automatically exported from code.google.com/p/signal-collect
0 stars 0 forks source link

Specify semantics for addEdge/addVertex and removeEdge/removeVertex #20

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
A consistent semantic has to be found for these operations. Probably these 
operations have to have an additional parameter that will cause a blocking 
optional RPC call, to ensure that the operation is executed before the 
computation proceeds. Integration tests that check that the guarantees hold are 
required too.

Original issue reported on code.google.com by philip.stutz on 10 Oct 2011 at 12:02

GoogleCodeExporter commented 9 years ago

Original comment by philip.stutz on 10 Oct 2011 at 12:54

GoogleCodeExporter commented 9 years ago

Original comment by philip.stutz on 14 Oct 2011 at 8:17

GoogleCodeExporter commented 9 years ago
The current approach of fire & forget is very simple. It would become 
problematic in the following cases:
- A user adds a vertex and immediately afterwards adds an edge to it or removes 
it again. This second operation fails, if it should get executed before the 
first operation  => SOLUTION: MessageBus needs to guarantee per-sender FIFO, 
which it currently does. Will add a comment to indicate this assumption to the 
MessageBus class.
- In a synchronous computation a vertex might sometimes be added during the 
current or during the next iteration with no guarantee. This might introduce a 
non-deterministic element. => SOLUTION: Coordinator and workers need to make 
sure that all such messages get processed in a predictable order. Modifications 
are only allowed AFTER the signal phase and BEFORE the next collect phase has 
started. Will create a separate ticket for this.

Original comment by philip.stutz on 14 Oct 2011 at 3:26