You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by rx...@apache.org on 2020/07/29 10:41:21 UTC
[pulsar] 12/25: fix validation never return false (#7593)
This is an automated email from the ASF dual-hosted git repository.
rxl pushed a commit to branch branch-2.6
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 45d2c8f6802e9fbc7f3790e20a889bf2fec0cedc
Author: feynmanlin <fe...@tencent.com>
AuthorDate: Mon Jul 27 12:26:51 2020 +0800
fix validation never return false (#7593)
Fixes #7543
(cherry picked from commit 27820358a92704c2cd24a08e295369dfbcb145cc)
---
.../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 4e2a6be..7f44836 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"));