Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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

  • Loading branch information...
commit 2e86d0abd0d60e05e85c0606d641f0f91d84e337 1 parent ffa98d8
@belaban authored
View
15 doc/design/varia2.txt
@@ -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
View
8 src/org/jgroups/protocols/pbcast/ClientGmsImpl.java
@@ -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())
Please sign in to comment.
Something went wrong with that request. Please try again.