You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2021/09/13 16:29:23 UTC

[tomcat] 01/02: Revert "Remove clear whole backlog shortcut"

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 74c27390405e1b57a7a0e34d24bd8df75bb1ceb7
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Sep 13 17:28:10 2021 +0100

    Revert "Remove clear whole backlog shortcut"
    
    This reverts commit dbd137f142385fe2db21f72a04e8a9a789f92ae3.
---
 .../apache/coyote/http2/Http2UpgradeHandler.java   | 28 ++++++++++++++--------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
index ebd79b6..b45dad0 100644
--- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java
+++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
@@ -1024,19 +1024,27 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH
 
     private synchronized Set<AbstractStream> releaseBackLog(int increment) {
         Set<AbstractStream> result = new HashSet<>();
-
-        int leftToAllocate = allocate(this, increment);
-        for (AbstractStream stream : backLogStreams) {
-            int allocation = stream.getUnusedAllocation();
-            if (allocation > 0) {
-                backLogSize -= allocation;
-                if (!stream.isNotifyInProgress()) {
-                    result.add(stream);
-                    stream.startNotify();
+        if (backLogSize < increment) {
+            // Can clear the whole backlog
+            result.addAll(backLogStreams);
+            backLogStreams.clear();
+            backLogSize = 0;
+        } else {
+            int leftToAllocate = increment;
+            while (leftToAllocate > 0) {
+                leftToAllocate = allocate(this, leftToAllocate);
+            }
+            for (AbstractStream stream : backLogStreams) {
+                int allocation = stream.getUnusedAllocation();
+                if (allocation > 0) {
+                    backLogSize -= allocation;
+                    if (!stream.isNotifyInProgress()) {
+                        result.add(stream);
+                        stream.startNotify();
+                    }
                 }
             }
         }
-
         return result;
     }
 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org