Permalink
Browse files

Not incrementing the highest delivered seqno for the coord anymore (h…

  • Loading branch information...
1 parent ffa98d8 commit 2e86d0abd0d60e05e85c0606d641f0f91d84e337 Bela Ban committed May 9, 2012
Showing with 19 additions and 4 deletions.
  1. +15 −0 doc/design/varia2.txt
  2. +4 −4 src/org/jgroups/protocols/pbcast/ClientGmsImpl.java
View
@@ -7,6 +7,21 @@
Digest returned to client
-------------------------
+*******************************************************************************************************************
+This issue is moot; we simply return the digest to the client. Here's the example (A's the coord and D the joiner):
+- A has a digest of #35 (the next message to be sent is #36)
+- A multicasts the view (A's digest is now #36)
+- D discards the view as it is not yet a member
+- A unicasts the view and digest (#35) to D
+- D sets its digest to A:35,D:0
+- A multicasts a new message #37
+- D asks A for retransmission of #36
+- D gets #36 (the view), but discards it as the join response already installed this view
+ - D delivers #37
+
+[https://issues.jboss.org/browse/JGRP-1455]
+*******************************************************************************************************************
+
The digest returned to clients determines the seqnos they have to
expect from other group members. If, in the absence of a
retransmission protocol, a client gets back a lower seqno for a member
@@ -6,7 +6,6 @@
import org.jgroups.util.Promise;
import org.jgroups.util.Util;
import org.jgroups.util.Digest;
-import org.jgroups.util.MutableDigest;
import java.util.*;
@@ -153,7 +152,7 @@ private void joinInternal(Address mbr, boolean joinWithStateTransfer,boolean use
rsp=null;
continue;
}
- MutableDigest tmp_digest=new MutableDigest(rsp.getDigest());
+ final Digest tmp_digest=rsp.getDigest();
tmp_view=rsp.getView();
if(tmp_view == null) {
if(log.isErrorEnabled())
@@ -165,8 +164,9 @@ private void joinInternal(Address mbr, boolean joinWithStateTransfer,boolean use
throw new IllegalStateException("digest returned from " + coord + " with JOIN_RSP does not contain myself (" +
gms.local_addr + "): join response: " + rsp);
}
- tmp_digest.incrementHighestDeliveredSeqno(coord); // see doc/design/varia2.txt for details
- tmp_digest.seal();
+ // bela April 2012: not incrementing the coord's seqno as per https://issues.jboss.org/browse/JGRP-1455
+ // tmp_digest.incrementHighestDeliveredSeqno(coord); // see doc/design/varia2.txt for details
+ // tmp_digest.seal();
gms.setDigest(tmp_digest);
if(log.isTraceEnabled())

0 comments on commit 2e86d0a

Please sign in to comment.