You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2008/06/13 15:47:21 UTC

svn commit: r667540 - in /incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport: Session.java SessionDelegate.java

Author: rhs
Date: Fri Jun 13 06:47:21 2008
New Revision: 667540

URL: http://svn.apache.org/viewvc?rev=667540&view=rev
Log:
QPID-901: don't send known-completed for ranges we ignore

Modified:
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java?rev=667540&r1=667539&r2=667540&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java Fri Jun 13 06:47:21 2008
@@ -226,11 +226,12 @@
         }
     }
 
-    void complete(int lower, int upper)
+    boolean complete(int lower, int upper)
     {
         log.debug("%s complete(%d, %d)", this, lower, upper);
         synchronized (commands)
         {
+            int old = maxComplete;
             for (int id = max(maxComplete, lower); le(id, upper); id++)
             {
                 commands.remove(id);
@@ -239,8 +240,9 @@
             {
                 maxComplete = max(maxComplete, upper);
             }
-            commands.notifyAll();
             log.debug("%s   commands remaining: %s", this, commands);
+            commands.notifyAll();
+            return gt(maxComplete, old);
         }
     }
 

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java?rev=667540&r1=667539&r2=667540&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/SessionDelegate.java Fri Jun 13 06:47:21 2008
@@ -67,16 +67,27 @@
     @Override public void sessionCompleted(Session ssn, SessionCompleted cmp)
     {
         RangeSet ranges = cmp.getCommands();
+        RangeSet known = null;
+        if (cmp.getTimelyReply())
+        {
+            known = new RangeSet();
+        }
+
         if (ranges != null)
         {
             for (Range range : ranges)
             {
-                ssn.complete(range.getLower(), range.getUpper());
+                boolean advanced = ssn.complete(range.getLower(), range.getUpper());
+                if (advanced && known != null)
+                {
+                    known.add(range);
+                }
             }
         }
-        if (cmp.getTimelyReply())
+
+        if (known != null)
         {
-            ssn.sessionKnownCompleted(ranges);
+            ssn.sessionKnownCompleted(known);
         }
     }