You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2022/02/25 07:58:30 UTC

[pulsar] 11/13: fix NPE in method of probeAvailable (#14454)

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

penghui pushed a commit to branch branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit c14c9496936e171ead47d61a1d751af2d1923daf
Author: lin chen <15...@qq.com>
AuthorDate: Fri Feb 25 10:19:56 2022 +0800

    fix NPE in method of probeAvailable (#14454)
    
    ### Motivation
    
    fix NPE in method of probeAvailable.  uri.getHost() may return null:
    https://github.com/apache/pulsar/blob/ced57866700aaeae163bcc6670d9a8eb1ffe8c50/pulsar-client/src/main/java/org/apache/pulsar/client/impl/AutoClusterFailover.java#L129-L131
    
    (cherry picked from commit 67160a512d7d18a7f42619719c83dc40e53e5132)
---
 .../java/org/apache/pulsar/client/impl/AutoClusterFailover.java  | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/AutoClusterFailover.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/AutoClusterFailover.java
index 726f9b1..61324b1 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/AutoClusterFailover.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/AutoClusterFailover.java
@@ -22,9 +22,7 @@ import static org.apache.pulsar.common.util.Runnables.catchingAndLoggingThrowabl
 import com.google.common.base.Strings;
 import io.netty.util.concurrent.DefaultThreadFactory;
 import java.io.IOException;
-import java.net.InetSocketAddress;
 import java.net.Socket;
-import java.net.URI;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -39,7 +37,6 @@ import org.apache.pulsar.client.api.AutoClusterFailoverBuilder;
 import org.apache.pulsar.client.api.PulsarClient;
 import org.apache.pulsar.client.api.ServiceUrlProvider;
 import org.apache.pulsar.client.impl.conf.ClientConfigurationData;
-import org.apache.pulsar.common.net.ServiceURI;
 
 @Slf4j
 @Data
@@ -64,6 +61,7 @@ public class AutoClusterFailover implements ServiceUrlProvider {
     private long failedTimestamp;
     private final long intervalMs;
     private static final int TIMEOUT = 30_000;
+    private final PulsarServiceNameResolver resolver;
 
     private AutoClusterFailover(AutoClusterFailoverBuilderImpl builder) {
         this.primary = builder.primary;
@@ -79,6 +77,7 @@ public class AutoClusterFailover implements ServiceUrlProvider {
         this.recoverTimestamp = -1;
         this.failedTimestamp = -1;
         this.intervalMs = builder.checkIntervalMs;
+        this.resolver = new PulsarServiceNameResolver();
         this.executor = Executors.newSingleThreadScheduledExecutor(
                 new DefaultThreadFactory("pulsar-service-provider"));
     }
@@ -124,9 +123,9 @@ public class AutoClusterFailover implements ServiceUrlProvider {
 
     boolean probeAvailable(String url) {
         try {
-            URI uri = ServiceURI.create(url).getUri();
+            resolver.updateServiceUrl(url);
             Socket socket = new Socket();
-            socket.connect(new InetSocketAddress(uri.getHost(), uri.getPort()), TIMEOUT);
+            socket.connect(resolver.resolveHost(), TIMEOUT);
             socket.close();
             return true;
         } catch (Exception e) {