You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by yu...@apache.org on 2023/06/30 06:43:38 UTC
[pulsar] branch master updated: [fix] [admin] set ns level backlog quota does not take effect if retention exists (#20690)
This is an automated email from the ASF dual-hosted git repository.
yubiao 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 6acd01d70d9 [fix] [admin] set ns level backlog quota does not take effect if retention exists (#20690)
6acd01d70d9 is described below
commit 6acd01d70d9cf55cd4ae295c39cabdddc618c11f
Author: fengyubiao <yu...@streamnative.io>
AuthorDate: Fri Jun 30 14:43:32 2023 +0800
[fix] [admin] set ns level backlog quota does not take effect if retention exists (#20690)
Motivation: When a retention policy exists, the command `pulsar-admin namespaces set-backlog-quota` does not take effect.In the PR https://github.com/apache/pulsar/pull/17383: it only checked the compatibility of `retention` and `backlog quota`, and it was not set.
Modifications: Fix the bug.
---
.../pulsar/broker/admin/impl/NamespacesBase.java | 1 +
.../apache/pulsar/broker/admin/AdminApi2Test.java | 22 ++++++++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
index 29c612880c1..ff87f52b64a 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
@@ -1323,6 +1323,7 @@ public abstract class NamespacesBase extends AdminResource {
"Backlog Quota exceeds configured retention quota for namespace."
+ " Please increase retention quota and retry");
}
+ policies.backlog_quota_map.put(quotaType, quota);
return policies;
});
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
index c97544eb5aa..3e5281b8f92 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
@@ -3304,4 +3304,26 @@ public class AdminApi2Test extends MockedPulsarServiceBaseTest {
admin.namespaces().deleteNamespace(ns, true);
Assert.assertFalse(admin.namespaces().getNamespaces(defaultTenant).contains(ns));
}
+
+ @Test
+ private void testSetBacklogQuotasNamespaceLevelIfRetentionExists() throws Exception {
+ final String ns = defaultTenant + "/ns-testSetBacklogQuotasNamespaceLevel";
+ final long backlogQuotaLimitSize = 100000002;
+ final int backlogQuotaLimitTime = 2;
+ admin.namespaces().createNamespace(ns, 2);
+ // create retention.
+ admin.namespaces().setRetention(ns, new RetentionPolicies(1800, 10000));
+ // set backlog quota.
+ admin.namespaces().setBacklogQuota(ns, BacklogQuota.builder()
+ .limitSize(backlogQuotaLimitSize).limitTime(backlogQuotaLimitTime).build());
+ // Verify result.
+ Map<BacklogQuota.BacklogQuotaType, BacklogQuota> map = admin.namespaces().getBacklogQuotaMap(ns);
+ assertEquals(map.size(), 1);
+ assertTrue(map.containsKey(BacklogQuota.BacklogQuotaType.destination_storage));
+ BacklogQuota backlogQuota = map.get(BacklogQuota.BacklogQuotaType.destination_storage);
+ assertEquals(backlogQuota.getLimitSize(), backlogQuotaLimitSize);
+ assertEquals(backlogQuota.getLimitTime(), backlogQuotaLimitTime);
+ // cleanup.
+ admin.namespaces().deleteNamespace(ns);
+ }
}