diff options
-rw-r--r-- | src/mem3.erl | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mem3.erl b/src/mem3.erl index 211fdf08..cec2631c 100644 --- a/src/mem3.erl +++ b/src/mem3.erl @@ -321,13 +321,16 @@ int_join(JoinType, ExtNodes, #mem{node=Node, nodes=Nodes, clock=Clock} = State, %% @doc handle the gossip messages %% We're not using vector_clock:resolve b/c we need custom merge strategy -handle_gossip(RemoteState=#mem{clock=RemoteClock}, +handle_gossip(RemoteState=#mem{clock=RemoteClock, node=RemoteNode}, LocalState=#mem{clock=LocalClock}) -> case vector_clock:compare(RemoteClock, LocalClock) of equal -> LocalState; - less -> LocalState; + less -> + % remote node needs updating + gen_server:cast({?SERVER, RemoteNode}, {gossip, LocalState}), + LocalState; greater -> - % this node needs updating + % local node needs updating new_state(RemoteState); concurrent -> % ick, so let's resolve and merge states |