This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/8.5.x by this push: new 1174ecc Clear waitFor earlier. Avoid multiple stream.notify() calls and timeouts 1174ecc is described below commit 1174ecc8c8ac41e7888ae3ab0e7f133ddac07d9c Author: Mark Thomas <ma...@apache.org> AuthorDate: Tue Jun 4 17:21:18 2019 +0100 Clear waitFor earlier. Avoid multiple stream.notify() calls and timeouts --- java/org/apache/coyote/http2/WindowAllocationManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/java/org/apache/coyote/http2/WindowAllocationManager.java b/java/org/apache/coyote/http2/WindowAllocationManager.java index 56acab9..da7aebe 100644 --- a/java/org/apache/coyote/http2/WindowAllocationManager.java +++ b/java/org/apache/coyote/http2/WindowAllocationManager.java @@ -133,8 +133,6 @@ class WindowAllocationManager { } else { stream.wait(timeout); } - - waitingFor = NONE; } } @@ -163,6 +161,12 @@ class WindowAllocationManager { synchronized (stream) { if ((notifyTarget & waitingFor) > NONE) { + // Reset this here so multiple notifies (possible with a + // backlog containing multiple streams and small window updates) + // are handled correctly (only the first should trigger a call + // to stream.notify(). Additional notify() calls may trigger + // unexpected timeouts. + waitingFor = NONE; if (stream.getCoyoteResponse().getWriteListener() == null) { // Blocking, so use notify to release StreamOutputBuffer if (log.isDebugEnabled()) { @@ -171,7 +175,6 @@ class WindowAllocationManager { } stream.notify(); } else { - waitingFor = NONE; // Non-blocking so dispatch if (log.isDebugEnabled()) { log.debug(sm.getString("windowAllocationManager.dispatched", --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org