This is an automated email from the ASF dual-hosted git repository. xiangying pushed a commit to branch branch-2.10 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 1d981961ec20c0819c335820fe022b661a1087bf Author: Xiangying Meng <[email protected]> AuthorDate: Fri Dec 9 12:41:57 2022 +0800 [fix][broker] Fix uncompleted future when get the topic policies of a deleted topic (#18824) Fix the uncompleted future when getting the topic policies of a deleted topic. https://github.com/apache/pulsar/blob/30b52a1ac11b4be485258140a167b5e635586a36/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java#L513-L535 `future.complete(null);` when `msg.getValue() == null`. (cherry picked from commit b3119613dd66038399eb4e354d6621bfe152cace) --- .../service/SystemTopicBasedTopicPoliciesService.java | 2 ++ .../apache/pulsar/broker/admin/TopicPoliciesTest.java | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java index d9325235c44..9eafa06d47f 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java @@ -523,6 +523,8 @@ public class SystemTopicBasedTopicPoliciesService implements TopicPoliciesServic } else { fetchTopicPoliciesAsyncAndCloseReader(reader, topicName, policies, future); } + } else { + future.complete(null); } }); } else { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java index 60e591446d1..80aea70c8d1 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java @@ -3012,4 +3012,21 @@ public class TopicPoliciesTest extends MockedPulsarServiceBaseTest { producer.send(new byte[2000]); } + @Test + public void testGetTopicPoliciesWhenDeleteTopicPolicy() throws Exception { + admin.topics().createNonPartitionedTopic(persistenceTopic); + admin.topicPolicies().setMaxConsumers(persistenceTopic, 5); + + int maxConsumerPerTopic = pulsar + .getTopicPoliciesService() + .getTopicPoliciesBypassCacheAsync(TopicName.get(persistenceTopic)).get() + .getMaxConsumerPerTopic(); + + assertEquals(maxConsumerPerTopic, 5); + admin.topics().delete(persistenceTopic, true); + TopicPolicies topicPolicies =pulsar.getTopicPoliciesService() + .getTopicPoliciesBypassCacheAsync(TopicName.get(persistenceTopic)).get(5, TimeUnit.SECONDS); + assertNull(topicPolicies); + } + }
