You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/01/20 15:49:13 UTC

[logging-log4j2] 03/03: Use a singleton for HostResolver since it is stateless.

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

ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit e2ee2f4dd9327eb1841023c3269ba12f5673e694
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Jan 20 10:49:05 2022 -0500

    Use a singleton for HostResolver since it is stateless.
---
 .../org/apache/logging/log4j/core/net/SslSocketManager.java |  2 +-
 .../org/apache/logging/log4j/core/net/TcpSocketManager.java | 13 +++++++++----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java
index e9e018d..9f0f5f5 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SslSocketManager.java
@@ -167,7 +167,7 @@ public class SslSocketManager extends TcpSocketManager {
 
         @Override
         Socket createSocket(final SslFactoryData data) throws IOException {
-            List<InetSocketAddress> socketAddresses = resolver.resolveHost(data.host, data.port);
+            List<InetSocketAddress> socketAddresses = RESOLVER.resolveHost(data.host, data.port);
             IOException ioe = null;
             for (InetSocketAddress socketAddress : socketAddresses) {
                 try {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
index 174b1e5..03d5e55 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
@@ -345,7 +345,7 @@ public class TcpSocketManager extends AbstractSocketManager {
         }
 
         void reconnect() throws IOException {
-            List<InetSocketAddress> socketAddresses = FACTORY.resolver.resolveHost(host, port);
+            List<InetSocketAddress> socketAddresses = TcpSocketManagerFactory.RESOLVER.resolveHost(host, port);
             if (socketAddresses.size() == 1) {
                 LOGGER.debug("Reconnecting " + socketAddresses.get(0));
                 connect(socketAddresses.get(0));
@@ -459,7 +459,7 @@ public class TcpSocketManager extends AbstractSocketManager {
     protected static class TcpSocketManagerFactory<M extends TcpSocketManager, T extends FactoryData>
             implements ManagerFactory<M, T> {
 
-        static HostResolver resolver = new HostResolver();
+        static volatile HostResolver RESOLVER = HostResolver.INSTANCE;
 
         @SuppressWarnings("resource")
         @Override
@@ -497,7 +497,7 @@ public class TcpSocketManager extends AbstractSocketManager {
         }
 
         Socket createSocket(final T data) throws IOException {
-            List<InetSocketAddress> socketAddresses = resolver.resolveHost(data.host, data.port);
+            List<InetSocketAddress> socketAddresses = RESOLVER.resolveHost(data.host, data.port);
             IOException ioe = null;
             for (InetSocketAddress socketAddress : socketAddresses) {
                 try {
@@ -537,10 +537,15 @@ public class TcpSocketManager extends AbstractSocketManager {
      * @param resolver the HostResolver.
      */
     public static void setHostResolver(HostResolver resolver) {
-        TcpSocketManagerFactory.resolver = resolver;
+        TcpSocketManagerFactory.RESOLVER = resolver;
     }
 
     public static class HostResolver {
+        
+        /**
+         * Singleton instance.
+         */
+        public static final HostResolver INSTANCE = new HostResolver();
 
         public List<InetSocketAddress> resolveHost(String host, int port) throws UnknownHostException {
             InetAddress[] addresses = InetAddress.getAllByName(host);