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 <[email protected]>
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);
+ }
}