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/07/07 03:32:17 UTC
[pulsar] 04/07: fix retention policy in topic policy not work
(#11021)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch branch-2.8
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 2eca81eb23a74b766b64fd1a708c8b5aaf8e018f
Author: hangc0276 <ch...@apache.org>
AuthorDate: Sat Jun 26 03:23:45 2021 +0800
fix retention policy in topic policy not work (#11021)
### Motivation
Retention policy in topic policy doesn't work due to retention policy doesn't set into managed ledger configuration.
### Modifications
1. Set retention policy into managedLedger configuration on `onUpdate` listener method.
2. Add test to cover this case.
(cherry picked from commit b7f8de40b358e0fc8c36774a14b9cb6863762056)
---
.../broker/service/persistent/PersistentTopic.java | 3 +++
.../pulsar/broker/admin/TopicPoliciesTest.java | 25 +++++++++++++++++++++-
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
index f678927..325d96d 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
@@ -2975,6 +2975,9 @@ public class PersistentTopic extends AbstractTopic
updateUnackedMessagesExceededOnConsumer(namespacePolicies.orElse(null));
checkDeduplicationStatus();
+
+ // update managed ledger config
+ checkPersistencePolicies();
}
private Optional<Policies> getNamespacePolicies() {
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 8ccecc6..f66f464 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
@@ -2284,7 +2284,7 @@ public class TopicPoliciesTest extends MockedPulsarServiceBaseTest {
}
}
- @Test
+ @Test(timeOut = 30000)
public void testSystemTopicShouldBeCompacted() throws Exception {
BacklogQuota backlogQuota = BacklogQuota.builder()
.limitSize(1024)
@@ -2320,4 +2320,27 @@ public class TopicPoliciesTest extends MockedPulsarServiceBaseTest {
});
}
+ @Test(timeOut = 30000)
+ public void testTopicRetentionPolicySetInManagedLedgerConfig() throws Exception {
+ RetentionPolicies nsRetentionPolicies = new RetentionPolicies(1, -1);
+ TopicName topicName = TopicName.get(testTopic);
+
+ // set and check retention policy on namespace level
+ admin.namespaces().setRetention(myNamespace, nsRetentionPolicies);
+ ManagedLedgerConfig managedLedgerConfig = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get();
+ Assert.assertEquals(managedLedgerConfig.getRetentionTimeMillis(),
+ TimeUnit.MINUTES.toMillis(nsRetentionPolicies.getRetentionTimeInMinutes()));
+ Assert.assertEquals(managedLedgerConfig.getRetentionSizeInMB(), nsRetentionPolicies.getRetentionSizeInMB());
+
+ // set and check retention policy on topic level
+ RetentionPolicies topicRetentionPolicies = new RetentionPolicies(2, -1);
+ admin.topics().setRetention(testTopic, topicRetentionPolicies);
+ Awaitility.await().untilAsserted(() -> {
+ ManagedLedgerConfig config = pulsar.getBrokerService().getManagedLedgerConfig(topicName).get();
+ Assert.assertEquals(config.getRetentionTimeMillis(),
+ TimeUnit.MINUTES.toMillis(topicRetentionPolicies.getRetentionTimeInMinutes()));
+ Assert.assertEquals(config.getRetentionSizeInMB(), topicRetentionPolicies.getRetentionSizeInMB());
+ });
+ }
+
}