diff options
| author | Diana Corbacho <diana.corbacho@erlang-solutions.com> | 2016-04-28 18:09:01 +0100 |
|---|---|---|
| committer | Diana Corbacho <diana.corbacho@erlang-solutions.com> | 2016-04-28 18:09:01 +0100 |
| commit | 6f11f14d183050b8804c0adf304bf7468586296e (patch) | |
| tree | 5f7bbbc6e1efac23d079c8f95473116c82c86b12 /src/gm.erl | |
| parent | 5b5d9b983b90d4840d7dc791449536e5448e6e62 (diff) | |
| download | rabbitmq-server-git-6f11f14d183050b8804c0adf304bf7468586296e.tar.gz | |
Drop ACKs of messages from lost members of the ring
* when partial partitions happen, inconsistent views can take place
where both nodes in partial partition see the live node as their left
(A -> C and B -> C), and override each other view in mnesia. Thus,
when C tries to compare the ACKs finds missing elements on A or B data.
We'll drop these as they won't be answered because the origin node
is going into pause_minority and stops.
Diffstat (limited to 'src/gm.erl')
| -rw-r--r-- | src/gm.erl | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gm.erl b/src/gm.erl index 199cf7c4de..1e4168c0e6 100644 --- a/src/gm.erl +++ b/src/gm.erl @@ -1338,7 +1338,11 @@ find_common(A, B, Common) -> {{{value, Val}, A1}, {{value, Val}, B1}} -> find_common(A1, B1, queue:in(Val, Common)); {{empty, _A}, _} -> - {Common, B} + {Common, B}; + {_, {_, B1}} -> + find_common(A, B1, Common); + {{_, A1}, _} -> + find_common(A1, B, Common) end. |
