diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/DefaultEurekaClientHttpRequestFactorySupplier.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/DefaultEurekaClientHttpRequestFactorySupplier.java index 7c6ab8435..24cd52265 100644 --- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/DefaultEurekaClientHttpRequestFactorySupplier.java +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/http/DefaultEurekaClientHttpRequestFactorySupplier.java @@ -55,9 +55,7 @@ public class DefaultEurekaClientHttpRequestFactorySupplier implements EurekaClie private final Set requestConfigCustomizers; - private final Object lock = new Object(); - - private volatile CloseableHttpClient sharedHttpClient; + private CloseableHttpClient sharedHttpClient; public DefaultEurekaClientHttpRequestFactorySupplier(TimeoutProperties timeoutProperties, Set requestConfigCustomizers) { @@ -66,20 +64,18 @@ public class DefaultEurekaClientHttpRequestFactorySupplier implements EurekaClie } @Override - public ClientHttpRequestFactory get(SSLContext sslContext, @Nullable HostnameVerifier hostnameVerifier) { - CloseableHttpClient httpClient; - synchronized (this.lock) { - httpClient = this.sharedHttpClient; - if (httpClient == null) { - HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); - if (sslContext != null || hostnameVerifier != null || timeoutProperties != null) { - httpClientBuilder - .setConnectionManager(buildConnectionManager(sslContext, hostnameVerifier, timeoutProperties)); - } - httpClientBuilder.setDefaultRequestConfig(buildRequestConfig()); - httpClient = httpClientBuilder.build(); - this.sharedHttpClient = httpClient; + public synchronized ClientHttpRequestFactory get(SSLContext sslContext, + @Nullable HostnameVerifier hostnameVerifier) { + CloseableHttpClient httpClient = this.sharedHttpClient; + if (httpClient == null) { + HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); + if (sslContext != null || hostnameVerifier != null || timeoutProperties != null) { + httpClientBuilder + .setConnectionManager(buildConnectionManager(sslContext, hostnameVerifier, timeoutProperties)); } + httpClientBuilder.setDefaultRequestConfig(buildRequestConfig()); + httpClient = httpClientBuilder.build(); + this.sharedHttpClient = httpClient; } HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); requestFactory.setHttpClient(httpClient); @@ -87,17 +83,15 @@ public class DefaultEurekaClientHttpRequestFactorySupplier implements EurekaClie } @Override - public void close() { - synchronized (this.lock) { - CloseableHttpClient httpClient = this.sharedHttpClient; - this.sharedHttpClient = null; - if (httpClient != null) { - try { - httpClient.close(); - } - catch (IOException ex) { - // best-effort close during shutdown; nothing actionable if it fails - } + public synchronized void close() { + CloseableHttpClient httpClient = this.sharedHttpClient; + this.sharedHttpClient = null; + if (httpClient != null) { + try { + httpClient.close(); + } + catch (IOException ex) { + // best-effort close during shutdown; nothing actionable if it fails } } }