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

commit 5295fbc7cf0a3b487f92194d5184810fe9557292
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Sep 24 17:50:43 2020 +0100

    Reduce memory footprint of closed http/2 streams
    
    This refactoring replaces closed streams with a new RecycledStream
    object and changes the mechanism used to look up known streams.
    Pull-up isClosedFinal()
---
 java/org/apache/coyote/http2/AbstractNonZeroStream.java | 1 +
 java/org/apache/coyote/http2/RecycledStream.java        | 8 ++++++++
 java/org/apache/coyote/http2/Stream.java                | 3 ++-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/java/org/apache/coyote/http2/AbstractNonZeroStream.java 
b/java/org/apache/coyote/http2/AbstractNonZeroStream.java
index e76496d..d1eb38a 100644
--- a/java/org/apache/coyote/http2/AbstractNonZeroStream.java
+++ b/java/org/apache/coyote/http2/AbstractNonZeroStream.java
@@ -97,4 +97,5 @@ abstract class AbstractNonZeroStream extends AbstractStream {
         this.weight = weight;
     }
 
+    abstract boolean isClosedFinal();
 }
diff --git a/java/org/apache/coyote/http2/RecycledStream.java 
b/java/org/apache/coyote/http2/RecycledStream.java
index 17a02cb..c17ae02 100644
--- a/java/org/apache/coyote/http2/RecycledStream.java
+++ b/java/org/apache/coyote/http2/RecycledStream.java
@@ -23,10 +23,12 @@ package org.apache.coyote.http2;
 class RecycledStream extends AbstractNonZeroStream {
 
     private final String connectionId;
+    private final boolean closedFinal;
 
     RecycledStream(Stream stream) {
         super(stream.getIdentifier(), stream.getWeight());
         connectionId = stream.getConnectionId();
+        closedFinal = stream.isClosedFinal();
     }
 
 
@@ -37,6 +39,12 @@ class RecycledStream extends AbstractNonZeroStream {
 
 
     @Override
+    boolean isClosedFinal() {
+        return closedFinal;
+    }
+
+
+    @Override
     @Deprecated
     protected synchronized void doNotifyAll() {
         // NO-OP. Unused.
diff --git a/java/org/apache/coyote/http2/Stream.java 
b/java/org/apache/coyote/http2/Stream.java
index be33904..5f3543f 100644
--- a/java/org/apache/coyote/http2/Stream.java
+++ b/java/org/apache/coyote/http2/Stream.java
@@ -612,7 +612,8 @@ public class Stream extends AbstractNonZeroStream 
implements HeaderEmitter {
     }
 
 
-    boolean isClosedFinal() {
+    @Override
+    final boolean isClosedFinal() {
         return state.isClosedFinal();
     }
 


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

Reply via email to