This is an automated email from the ASF dual-hosted git repository.
sijie 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 2782035 fix validation never return false (#7593)
2782035 is described below
commit 27820358a92704c2cd24a08e295369dfbcb145cc
Author: feynmanlin <[email protected]>
AuthorDate: Mon Jul 27 12:26:51 2020 +0800
fix validation never return false (#7593)
Fixes #7543
---
.../pulsar/client/impl/TopicsConsumerImplTest.java | 22 ++++++++++++++++++++++
.../client/impl/MultiTopicsConsumerImpl.java | 8 +++-----
2 files changed, 25 insertions(+), 5 deletions(-)
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java
index debc250..7b5309f 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java
@@ -456,6 +456,28 @@ public class TopicsConsumerImplTest extends
ProducerConsumerBase {
}
@Test
+ public void testTopicNameValid() throws Exception{
+ final String topicName =
"persistent://prop/use/ns-abc/testTopicNameValid";
+ TenantInfo tenantInfo = createDefaultTenantInfo();
+ admin.tenants().createTenant("prop", tenantInfo);
+ admin.topics().createPartitionedTopic(topicName, 3);
+ Consumer<byte[]> consumer = pulsarClient.newConsumer()
+ .topic(topicName)
+ .subscriptionName("subscriptionName")
+ .subscribe();
+ ((MultiTopicsConsumerImpl)
consumer).subscribeAsync("ns-abc/testTopicNameValid", 5).handle((res,
exception) -> {
+ assertTrue(exception instanceof
PulsarClientException.AlreadyClosedException);
+ assertEquals(((PulsarClientException.AlreadyClosedException)
exception).getMessage(), "Topic name not valid");
+ return null;
+ }).get();
+ ((MultiTopicsConsumerImpl) consumer).subscribeAsync(topicName,
3).handle((res, exception) -> {
+ assertTrue(exception instanceof
PulsarClientException.AlreadyClosedException);
+ assertEquals(((PulsarClientException.AlreadyClosedException)
exception).getMessage(), "Topic name not valid");
+ return null;
+ }).get();
+ }
+
+ @Test
public void testSubscribeUnsubscribeSingleTopic() throws Exception {
String key = "TopicsConsumerSubscribeUnsubscribeSingleTopicTest";
final String subscriptionName = "my-ex-subscription-" + key;
diff --git
a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java
b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java
index 9841b27..7529ea5 100644
---
a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java
+++
b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java
@@ -728,10 +728,7 @@ public class MultiTopicsConsumerImpl<T> extends
ConsumerBase<T> {
}
private boolean topicNameValid(String topicName) {
- checkArgument(TopicName.isValid(topicName), "Invalid topic name:" +
topicName);
- checkArgument(!topics.containsKey(topicName), "Topics already contains
topic:" + topicName);
-
- return true;
+ return TopicName.isValid(topicName) && !topics.containsKey(topicName);
}
// subscribe one more given topic
@@ -792,7 +789,8 @@ public class MultiTopicsConsumerImpl<T> extends
ConsumerBase<T> {
}
// subscribe one more given topic, but already know the numberPartitions
- private CompletableFuture<Void> subscribeAsync(String topicName, int
numberPartitions) {
+ @VisibleForTesting
+ CompletableFuture<Void> subscribeAsync(String topicName, int
numberPartitions) {
if (!topicNameValid(topicName)) {
return FutureUtil.failedFuture(
new PulsarClientException.AlreadyClosedException("Topic name
not valid"));