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 2021/01/14 06:02:51 UTC
[pulsar] branch master updated: Fix potential http get hangs in the
Pulsar Admin (#9203)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new bb4cb31 Fix potential http get hangs in the Pulsar Admin (#9203)
bb4cb31 is described below
commit bb4cb3125d92d3c59224524c9d59cff8f3cd7324
Author: lipenghui <pe...@apache.org>
AuthorDate: Thu Jan 14 14:02:11 2021 +0800
Fix potential http get hangs in the Pulsar Admin (#9203)
### Motivation
Currently, for the HTTP async get method, we pass a callback and return a future. This is confusing which one is the right result. And if exception throws, will return a future that complete with exception but the callback have not been called. All the caller of the `asyncGetRequest` handles the callback, not the returned future, this will lead a potential hangs in the Pulsar Admin since the callback might never be called.
### Modifications
Change the `asyncGetRequest` method to only handle the callback and use `void` as the return type.
---
.../org/apache/pulsar/client/admin/internal/BaseResource.java | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java
index eb08f93..10126d0 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java
@@ -22,7 +22,6 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.Future;
import javax.ws.rs.ClientErrorException;
import javax.ws.rs.ServerErrorException;
import javax.ws.rs.ServiceUnavailableException;
@@ -46,7 +45,6 @@ import org.apache.pulsar.client.api.Authentication;
import org.apache.pulsar.client.api.AuthenticationDataProvider;
import org.apache.pulsar.client.api.PulsarClientException;
import org.apache.pulsar.common.policies.data.ErrorData;
-import org.apache.pulsar.common.util.FutureUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -161,11 +159,11 @@ public abstract class BaseResource {
return future;
}
- public <T> Future<T> asyncGetRequest(final WebTarget target, InvocationCallback<T> callback) {
+ public <T> void asyncGetRequest(final WebTarget target, InvocationCallback<T> callback) {
try {
- return request(target).async().get(callback);
+ request(target).async().get(callback);
} catch (PulsarAdminException cae) {
- return FutureUtil.failedFuture(cae);
+ callback.failed(cae);
}
}