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);
+    }
 }

Reply via email to