This is an automated email from the ASF dual-hosted git repository.

xiangying 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 b3119613dd6 [fix][broker] Fix uncompleted future when get the topic 
policies of  a deleted topic (#18824)
b3119613dd6 is described below

commit b3119613dd66038399eb4e354d6621bfe152cace
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)
    
    ### Motivation
    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
    ### Modification
    `future.complete(null);` when `msg.getValue() == null`.
---
 .../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 a24b1eeee10..d4c41230daf 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
@@ -528,6 +528,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 d47c918cf6a..94cd299e475 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
@@ -3092,4 +3092,21 @@ public class TopicPoliciesTest extends 
MockedPulsarServiceBaseTest {
         Awaitility.await().untilAsserted(() -> 
assertNull(admin.topics().getShadowTopics(sourceTopic)));
     }
 
+    @Test
+    public void testGetTopicPoliciesWhenDeleteTopicPolicy() throws Exception {
+        admin.topics().createNonPartitionedTopic(persistenceTopic);
+        admin.topicPolicies().setMaxConsumers(persistenceTopic, 5);
+
+        Integer 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);
+    }
+
 }

Reply via email to