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);