This is an automated email from the ASF dual-hosted git repository.
yubiao pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new 24599284532 [fix] [admin] set ns level backlog quota does not take
effect if retention exists (#20690)
24599284532 is described below
commit 2459928453203512e043a43cadb887bf17b6236e
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.
(cherry picked from commit 6acd01d70d9cf55cd4ae295c39cabdddc618c11f)
---
.../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 97029eb5ce1..aa338887abc 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
@@ -1347,6 +1347,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 71892d00931..7d7d167fe3f 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);
+ }
}