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