CVS update: JGroups/src/org/jgroups/protocols/pbcast NAKACK.java
"Bela Ban" <[email protected]> Wed, 10 Nov 2010 13:54:24 +0000
| Newsgroups | gmane.comp.java.javagroups.cvs |
|---|---|
| Message-ID | <[email protected]> |
User: belaban
Date: 10/11/10 13:54:24
Modified: src/org/jgroups/protocols/pbcast NAKACK.java
Log:
Adjusting seqno now if digest for self is different from own seqn (https://jira.jboss.org/browse/JGRP-1251)
Revision Changes Path
1.262 +30 -1 JGroups/src/org/jgroups/protocols/pbcast/NAKACK.java
Index: NAKACK.java
===================================================================
RCS file: /cvsroot/javagroups/JGroups/src/org/jgroups/protocols/pbcast/NAKACK.java,v
retrieving revision 1.261
retrieving revision 1.262
diff -u -r1.261 -r1.262
--- NAKACK.java 8 Nov 2010 08:57:01 -0000 1.261
+++ NAKACK.java 10 Nov 2010 13:54:24 -0000 1.262
@@ -32,7 +32,7 @@
* instead of the requester by setting use_mcast_xmit to true.
*
* @author Bela Ban
- * @version $Id: NAKACK.java,v 1.261 2010/11/08 08:57:01 belaban Exp $
+ * @version $Id: NAKACK.java,v 1.262 2010/11/10 13:54:24 belaban Exp $
*/
@MBean(description="Reliable transmission multipoint FIFO protocol")
@DeprecatedProperty(names={"max_xmit_size", "eager_lock_release", "stats_list_size"})
@@ -272,6 +272,9 @@
}
+ @ManagedAttribute
+ public long getCurrentSeqno() {return seqno;}
+
@ManagedOperation
public String printRetransmitStats() {
StringBuilder sb=new StringBuilder();
@@ -1185,6 +1188,7 @@
StringBuilder sb=new StringBuilder("\n[overwriteDigest()]\n");
sb.append("existing digest: " + getDigest()).append("\nnew digest: " + digest);
+ boolean set_own_seqno=false;
for(Map.Entry<Address, Digest.Entry> entry: digest.getSenders().entrySet()) {
Address sender=entry.getKey();
Digest.Entry val=entry.getValue();
@@ -1198,11 +1202,23 @@
if(win != null) {
win.destroy(); // stops retransmission
xmit_table.remove(sender);
+ if(sender.equals(local_addr)) { // Adjust the seqno: https://jira.jboss.org/browse/JGRP-1251
+ seqno_lock.lock();
+ try {
+ seqno=highest_delivered_seqno;
+ set_own_seqno=true;
+ }
+ finally {
+ seqno_lock.unlock();
+ }
+ }
}
win=createNakReceiverWindow(sender, highest_delivered_seqno, low_seqno);
xmit_table.put(sender, win);
}
sb.append("\n").append("resulting digest: " + getDigest());
+ if(set_own_seqno)
+ sb.append("\nnew seqno for " + local_addr + ": " + seqno);
digest_history.add(sb.toString());
if(log.isDebugEnabled())
log.debug(sb.toString());
@@ -1223,6 +1239,7 @@
StringBuilder sb=new StringBuilder(merge? "\n[mergeDigest()]\n" : "\n[setDigest()]\n");
sb.append("existing digest: " + getDigest()).append("\nnew digest: " + digest);
+ boolean set_own_seqno=false;
for(Map.Entry<Address, Digest.Entry> entry: digest.getSenders().entrySet()) {
Address sender=entry.getKey();
Digest.Entry val=entry.getValue();
@@ -1243,11 +1260,23 @@
win.destroy(); // stops retransmission
xmit_table.remove(sender);
+ if(sender.equals(local_addr)) { // Adjust the seqno: https://jira.jboss.org/browse/JGRP-1251
+ seqno_lock.lock();
+ try {
+ seqno=highest_delivered_seqno;
+ set_own_seqno=true;
+ }
+ finally {
+ seqno_lock.unlock();
+ }
+ }
}
win=createNakReceiverWindow(sender, highest_delivered_seqno, low_seqno);
xmit_table.put(sender, win);
}
sb.append("\n").append("resulting digest: " + getDigest());
+ if(set_own_seqno)
+ sb.append("\nnew seqno for " + local_addr + ": " + seqno);
digest_history.add(sb.toString());
if(log.isDebugEnabled())
log.debug(sb.toString());
------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a
Billion" shares his insights and actions to help propel your
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev