CVS update: JGroups/src/org/jgroups/protocols/pbcast NAKACK.java
"Bela Ban" <[email protected]> Wed, 10 Nov 2010 14:08:45 +0000
| Newsgroups | gmane.comp.java.javagroups.cvs |
|---|---|
| Message-ID | <[email protected]> |
User: belaban
Date: 10/11/10 14:08:45
Modified: src/org/jgroups/protocols/pbcast Tag: Branch_JGroups_2_10
NAKACK.java
Log:
adjusting seqno when overwriting digest (https://jira.jboss.org/browse/JGRP-1251)
Revision Changes Path
No revision
No revision
1.255.2.1 +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.255
retrieving revision 1.255.2.1
diff -u -r1.255 -r1.255.2.1
--- NAKACK.java 14 Jun 2010 08:11:19 -0000 1.255
+++ NAKACK.java 10 Nov 2010 14:08:45 -0000 1.255.2.1
@@ -32,7 +32,7 @@
* instead of the requester by setting use_mcast_xmit to true.
*
* @author Bela Ban
- * @version $Id: NAKACK.java,v 1.255 2010/06/14 08:11:19 belaban Exp $
+ * @version $Id: NAKACK.java,v 1.255.2.1 2010/11/10 14:08:45 belaban Exp $
*/
@MBean(description="Reliable transmission multipoint FIFO protocol")
@DeprecatedProperty(names={"max_xmit_size", "eager_lock_release", "stats_list_size"})
@@ -271,6 +271,9 @@
}
+ @ManagedAttribute
+ public long getCurrentSeqno() {return seqno;}
+
@ManagedOperation
public String printRetransmitStats() {
StringBuilder sb=new StringBuilder();
@@ -1230,6 +1233,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();
@@ -1243,11 +1247,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());
@@ -1268,6 +1284,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();
@@ -1288,11 +1305,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