From de4692e6e0c64385606f9dfae729cc49d8ac1460 Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Mon, 31 Oct 2016 07:23:22 +0100 Subject: [PATCH] Not use InternalThreadLocalMap where access may be done from outside the EventLoop. Motivation: We should not use the InternalThreadLocalMap where access may be done from outside the EventLoop as this may create a lot of memory usage while not be reused anyway. Modifications: Not use InternalThreadLocalMap in places where the code-path will likely be executed from outside the EventLoop. Result: Less memory bloat. --- .../io/netty/handler/ssl/IdentityCipherSuiteFilter.java | 5 ++--- .../netty/handler/ssl/ReferenceCountedOpenSslEngine.java | 4 ++-- .../io/netty/handler/ssl/SupportedCipherSuiteFilter.java | 7 +++---- .../handler/ssl/util/FingerprintTrustManagerFactory.java | 6 +++--- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/handler/src/main/java/io/netty/handler/ssl/IdentityCipherSuiteFilter.java b/handler/src/main/java/io/netty/handler/ssl/IdentityCipherSuiteFilter.java index fc6235c2aa..c9ebfb0da2 100644 --- a/handler/src/main/java/io/netty/handler/ssl/IdentityCipherSuiteFilter.java +++ b/handler/src/main/java/io/netty/handler/ssl/IdentityCipherSuiteFilter.java @@ -15,8 +15,7 @@ */ package io.netty.handler.ssl; -import io.netty.util.internal.InternalThreadLocalMap; - +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -34,7 +33,7 @@ public final class IdentityCipherSuiteFilter implements CipherSuiteFilter { if (ciphers == null) { return defaultCiphers.toArray(new String[defaultCiphers.size()]); } else { - List newCiphers = InternalThreadLocalMap.get().arrayList(supportedCiphers.size()); + List newCiphers = new ArrayList(supportedCiphers.size()); for (String c : ciphers) { if (c == null) { break; diff --git a/handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java b/handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java index c711258fc1..2fc2ed3dd6 100644 --- a/handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java +++ b/handler/src/main/java/io/netty/handler/ssl/ReferenceCountedOpenSslEngine.java @@ -24,7 +24,6 @@ import io.netty.util.ResourceLeak; import io.netty.util.ResourceLeakDetector; import io.netty.util.ResourceLeakDetectorFactory; import io.netty.util.internal.EmptyArrays; -import io.netty.util.internal.InternalThreadLocalMap; import io.netty.util.internal.PlatformDependent; import io.netty.util.internal.StringUtil; import io.netty.util.internal.ThrowableUtil; @@ -39,6 +38,7 @@ import java.nio.ByteBuffer; import java.nio.ReadOnlyBufferException; import java.security.Principal; import java.security.cert.Certificate; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; @@ -1128,7 +1128,7 @@ public class ReferenceCountedOpenSslEngine extends SSLEngine implements Referenc @Override public final String[] getEnabledProtocols() { - List enabled = InternalThreadLocalMap.get().arrayList(); + List enabled = new ArrayList(6); // Seems like there is no way to explict disable SSLv2Hello in openssl so it is always enabled enabled.add(OpenSsl.PROTOCOL_SSL_V2_HELLO); diff --git a/handler/src/main/java/io/netty/handler/ssl/SupportedCipherSuiteFilter.java b/handler/src/main/java/io/netty/handler/ssl/SupportedCipherSuiteFilter.java index a90f3c8ffc..132f1a0e5e 100644 --- a/handler/src/main/java/io/netty/handler/ssl/SupportedCipherSuiteFilter.java +++ b/handler/src/main/java/io/netty/handler/ssl/SupportedCipherSuiteFilter.java @@ -15,9 +15,8 @@ */ package io.netty.handler.ssl; -import io.netty.util.internal.InternalThreadLocalMap; - import javax.net.ssl.SSLEngine; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -41,10 +40,10 @@ public final class SupportedCipherSuiteFilter implements CipherSuiteFilter { final List newCiphers; if (ciphers == null) { - newCiphers = InternalThreadLocalMap.get().arrayList(defaultCiphers.size()); + newCiphers = new ArrayList(defaultCiphers.size()); ciphers = defaultCiphers; } else { - newCiphers = InternalThreadLocalMap.get().arrayList(supportedCiphers.size()); + newCiphers = new ArrayList(supportedCiphers.size()); } for (String c : ciphers) { if (c == null) { diff --git a/handler/src/main/java/io/netty/handler/ssl/util/FingerprintTrustManagerFactory.java b/handler/src/main/java/io/netty/handler/ssl/util/FingerprintTrustManagerFactory.java index 79e434655a..b5a65019e3 100644 --- a/handler/src/main/java/io/netty/handler/ssl/util/FingerprintTrustManagerFactory.java +++ b/handler/src/main/java/io/netty/handler/ssl/util/FingerprintTrustManagerFactory.java @@ -20,7 +20,6 @@ import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import io.netty.util.internal.EmptyArrays; import io.netty.util.concurrent.FastThreadLocal; -import io.netty.util.internal.InternalThreadLocalMap; import javax.net.ssl.ManagerFactoryParameters; import javax.net.ssl.TrustManager; @@ -32,6 +31,7 @@ import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Pattern; @@ -159,7 +159,7 @@ public final class FingerprintTrustManagerFactory extends SimpleTrustManagerFact throw new NullPointerException("fingerprints"); } - List list = InternalThreadLocalMap.get().arrayList(); + List list = new ArrayList(fingerprints.length); for (byte[] f: fingerprints) { if (f == null) { break; @@ -179,7 +179,7 @@ public final class FingerprintTrustManagerFactory extends SimpleTrustManagerFact throw new NullPointerException("fingerprints"); } - List list = InternalThreadLocalMap.get().arrayList(); + List list = new ArrayList(); for (String f: fingerprints) { if (f == null) { break;