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 2020/05/04 14:43:50 UTC

[tomcat] branch 9.0.x updated (b8582f8 -> c4b71e3)

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

markt pushed a change to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git.


    from b8582f8  Align with master & 8.5.x
     new 582c09f  Recycle in a consistent location
     new c4b71e3  Avoid waste of resources due to reconstruction of objects

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/catalina/core/ApplicationContext.java   | 12 +++++-----
 .../apache/catalina/ha/tcp/ReplicationValve.java   |  2 +-
 .../catalina/session/PersistentManagerBase.java    |  2 +-
 .../catalina/valves/rewrite/RewriteCond.java       |  2 +-
 .../catalina/valves/rewrite/RewriteRule.java       |  4 ++--
 .../catalina/valves/rewrite/RewriteValve.java      |  2 +-
 java/org/apache/juli/ClassLoaderLogManager.java    |  2 +-
 test/org/apache/catalina/valves/Benchmarks.java    | 26 +++++++++++-----------
 8 files changed, 27 insertions(+), 25 deletions(-)


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


[tomcat] 01/02: Recycle in a consistent location

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 582c09fe29cf51c800988d5294016880bfba9b8a
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon May 4 15:25:01 2020 +0100

    Recycle in a consistent location
---
 java/org/apache/catalina/core/ApplicationContext.java | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/java/org/apache/catalina/core/ApplicationContext.java b/java/org/apache/catalina/core/ApplicationContext.java
index cce739b..7e6eed6 100644
--- a/java/org/apache/catalina/core/ApplicationContext.java
+++ b/java/org/apache/catalina/core/ApplicationContext.java
@@ -454,10 +454,8 @@ public class ApplicationContext implements ServletContext {
             dispatchData.set(dd);
         }
 
-        MessageBytes uriMB = dd.uriMB;
-        uriMB.recycle();
-
         // Use the thread local mapping data
+        MessageBytes uriMB = dd.uriMB;
         MappingData mappingData = dd.mappingData;
 
         try {
@@ -487,7 +485,11 @@ public class ApplicationContext implements ServletContext {
         } finally {
             // Recycle thread local data at the end of the request so references
             // are not held to a completed request as there is potential for
-            // that to trigger a memory leak if a context is unloaded.
+            // that to trigger a memory leak if a context is unloaded. Not
+            // strictly necessary here for uriMB but it needs to be recycled at
+            // some point so do it here for consistency with mappingData which
+            // must be recycled here.
+            uriMB.recycle();
             mappingData.recycle();
         }
     }


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


[tomcat] 02/02: Avoid waste of resources due to reconstruction of objects

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit c4b71e31f3183ce3f4b8e86bd2cef49393a2a7e5
Author: KangZhiDong <wo...@gmail.com>
AuthorDate: Sat Apr 25 01:30:47 2020 +0800

    Avoid waste of resources due to reconstruction of objects
---
 .../apache/catalina/core/ApplicationContext.java   |  2 +-
 .../apache/catalina/ha/tcp/ReplicationValve.java   |  2 +-
 .../catalina/session/PersistentManagerBase.java    |  2 +-
 .../catalina/valves/rewrite/RewriteCond.java       |  2 +-
 .../catalina/valves/rewrite/RewriteRule.java       |  4 ++--
 .../catalina/valves/rewrite/RewriteValve.java      |  2 +-
 java/org/apache/juli/ClassLoaderLogManager.java    |  2 +-
 test/org/apache/catalina/valves/Benchmarks.java    | 26 +++++++++++-----------
 8 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/java/org/apache/catalina/core/ApplicationContext.java b/java/org/apache/catalina/core/ApplicationContext.java
index 7e6eed6..1e29076 100644
--- a/java/org/apache/catalina/core/ApplicationContext.java
+++ b/java/org/apache/catalina/core/ApplicationContext.java
@@ -186,7 +186,7 @@ public class ApplicationContext implements ServletContext {
     /**
      * Thread local data used during request dispatch.
      */
-    private final ThreadLocal<DispatchData> dispatchData = new ThreadLocal<>();
+    private static final ThreadLocal<DispatchData> dispatchData = new ThreadLocal<>();
 
 
     /**
diff --git a/java/org/apache/catalina/ha/tcp/ReplicationValve.java b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
index 6eed956..666e29d 100644
--- a/java/org/apache/catalina/ha/tcp/ReplicationValve.java
+++ b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
@@ -85,7 +85,7 @@ public class ReplicationValve
     /**
      * crossContext session container
      */
-    protected final ThreadLocal<ArrayList<DeltaSession>> crossContextSessions =
+    protected static final ThreadLocal<ArrayList<DeltaSession>> crossContextSessions =
         new ThreadLocal<>() ;
 
     /**
diff --git a/java/org/apache/catalina/session/PersistentManagerBase.java b/java/org/apache/catalina/session/PersistentManagerBase.java
index 9f52c44..1fd08be 100644
--- a/java/org/apache/catalina/session/PersistentManagerBase.java
+++ b/java/org/apache/catalina/session/PersistentManagerBase.java
@@ -188,7 +188,7 @@ public abstract class PersistentManagerBase extends ManagerBase
      * Session that is currently getting swapped in to prevent loading it more
      * than once concurrently
      */
-    private final ThreadLocal<Session> sessionToSwapIn = new ThreadLocal<>();
+    private static final ThreadLocal<Session> sessionToSwapIn = new ThreadLocal<>();
 
 
     // ------------------------------------------------------------- Properties
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteCond.java b/java/org/apache/catalina/valves/rewrite/RewriteCond.java
index 47a904c..a980d81 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteCond.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteCond.java
@@ -28,7 +28,7 @@ public class RewriteCond {
 
     public static class PatternCondition extends Condition {
         public Pattern pattern;
-        private ThreadLocal<Matcher> matcher = new ThreadLocal<>();
+        private static ThreadLocal<Matcher> matcher = new ThreadLocal<>();
 
         @Override
         public boolean evaluate(String value, Resolver resolver) {
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteRule.java b/java/org/apache/catalina/valves/rewrite/RewriteRule.java
index 833a12c..0aa96de 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteRule.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteRule.java
@@ -26,7 +26,7 @@ public class RewriteRule {
 
     protected RewriteCond[] conditions = new RewriteCond[0];
 
-    protected ThreadLocal<Pattern> pattern = new ThreadLocal<>();
+    protected static ThreadLocal<Pattern> pattern = new ThreadLocal<>();
     protected Substitution substitution = null;
 
     protected String patternString = null;
@@ -186,7 +186,7 @@ public class RewriteRule {
     protected boolean cookieSecure = false;
     protected boolean cookieHttpOnly = false;
     protected Substitution cookieSubstitution = null;
-    protected ThreadLocal<String> cookieResult = new ThreadLocal<>();
+    protected static ThreadLocal<String> cookieResult = new ThreadLocal<>();
 
     /**
      *  This forces a request attribute named VAR to be set to the value VAL,
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteValve.java b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
index 70d204b..273fe80 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteValve.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
@@ -77,7 +77,7 @@ public class RewriteValve extends ValveBase {
     /**
      * If rewriting occurs, the whole request will be processed again.
      */
-    protected ThreadLocal<Boolean> invoked = new ThreadLocal<>();
+    protected static ThreadLocal<Boolean> invoked = new ThreadLocal<>();
 
 
     /**
diff --git a/java/org/apache/juli/ClassLoaderLogManager.java b/java/org/apache/juli/ClassLoaderLogManager.java
index a04285c..cf3ad4c 100644
--- a/java/org/apache/juli/ClassLoaderLogManager.java
+++ b/java/org/apache/juli/ClassLoaderLogManager.java
@@ -112,7 +112,7 @@ public class ClassLoaderLogManager extends LogManager {
      * This prefix is used to allow using prefixes for the properties names
      * of handlers and their subcomponents.
      */
-    protected final ThreadLocal<String> prefix = new ThreadLocal<>();
+    protected static final ThreadLocal<String> prefix = new ThreadLocal<>();
 
 
     /**
diff --git a/test/org/apache/catalina/valves/Benchmarks.java b/test/org/apache/catalina/valves/Benchmarks.java
index 752ebad..5c67d9b 100644
--- a/test/org/apache/catalina/valves/Benchmarks.java
+++ b/test/org/apache/catalina/valves/Benchmarks.java
@@ -76,14 +76,14 @@ public class Benchmarks {
             return "ThreadLocals";
         }
 
-        private ThreadLocal<Long> currentMillisLocal = new ThreadLocal<Long>() {
+        private static ThreadLocal<Long> currentMillisLocal = new ThreadLocal<Long>() {
             @Override
             protected Long initialValue() {
                 return Long.valueOf(0);
             }
         };
 
-        private ThreadLocal<Date> currentDateLocal = new ThreadLocal<>();
+        private static ThreadLocal<Date> currentDateLocal = new ThreadLocal<>();
 
         @Override
         public void run() {
@@ -112,14 +112,14 @@ public class Benchmarks {
             long value = 0;
         }
 
-        private ThreadLocal<MutableLong> currentMillisLocal = new ThreadLocal<MutableLong>() {
+        private static ThreadLocal<MutableLong> currentMillisLocal = new ThreadLocal<MutableLong>() {
             @Override
             protected MutableLong initialValue() {
                 return new MutableLong();
             }
         };
 
-        private ThreadLocal<Date> currentDateLocal = new ThreadLocal<>();
+        private static ThreadLocal<Date> currentDateLocal = new ThreadLocal<>();
 
         @Override
         public void run() {
@@ -149,7 +149,7 @@ public class Benchmarks {
             public Date currentDate;
         }
 
-        private ThreadLocal<Struct> currentStruct = new ThreadLocal<Struct>() {
+        private static ThreadLocal<Struct> currentStruct = new ThreadLocal<Struct>() {
             @Override
             protected Struct initialValue() {
                 return new Struct();
@@ -266,33 +266,33 @@ public class Benchmarks {
             return "ThreadLocals";
         }
 
-        private ThreadLocal<String> currentDateStringLocal = new ThreadLocal<>();
+        private static ThreadLocal<String> currentDateStringLocal = new ThreadLocal<>();
 
-        private ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>() {
+        private static ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>() {
             @Override
             protected Date initialValue() {
                 return new Date();
             }
         };
-        private ThreadLocal<SimpleDateFormat> dayFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private static ThreadLocal<SimpleDateFormat> dayFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("dd");
             }
         };
-        private ThreadLocal<SimpleDateFormat> monthFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private static ThreadLocal<SimpleDateFormat> monthFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("MM");
             }
         };
-        private ThreadLocal<SimpleDateFormat> yearFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private static ThreadLocal<SimpleDateFormat> yearFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("yyyy");
             }
         };
-        private ThreadLocal<SimpleDateFormat> timeFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private static ThreadLocal<SimpleDateFormat> timeFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("hh:mm:ss");
@@ -354,7 +354,7 @@ public class Benchmarks {
                     "hh:mm:ss");
         }
 
-        private ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
+        private static ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
             @Override
             protected Struct initialValue() {
                 return new Struct();
@@ -415,7 +415,7 @@ public class Benchmarks {
                     "hh:mm:ss");
         }
 
-        private ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
+        private static ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
             @Override
             protected Struct initialValue() {
                 return new Struct();


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