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