This is an automated email from the ASF dual-hosted git repository.

penghui pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 89c7b6e0d586812bd39bb2b21175dcad4c237316
Author: ZhangJian He <[email protected]>
AuthorDate: Fri Jan 7 15:14:45 2022 +0800

    [issue #13439][backlogQuota] Allow both limit and limitsize be null (#13557)
    
    Fixes #13439
    ### Motivation
    Now we only constraint `limit` or `limitSize` be set on pulsar-admin, we 
don't limit it on rest endpoint. So there are situtations that both `limit` and 
`limitSize` be null
    
    ### Verifying this change
    
    This change added tests and can be verified as follows:
      - *Added test method in `BacklogQuotaCompatibilityTest`
    
    (cherry picked from commit 33491bc2edf698723865d2be168e4b1082742d45)
---
 .../common/policies/data/impl/BacklogQuotaImpl.java  |  4 +---
 .../metadata/BacklogQuotaCompatibilityTest.java      | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/impl/BacklogQuotaImpl.java
 
b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/impl/BacklogQuotaImpl.java
index 3d97fa0..c8073d8 100644
--- 
a/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/impl/BacklogQuotaImpl.java
+++ 
b/pulsar-client-admin-api/src/main/java/org/apache/pulsar/common/policies/data/impl/BacklogQuotaImpl.java
@@ -35,7 +35,7 @@ public class BacklogQuotaImpl implements BacklogQuota {
      * @since 2.9.1
      */
     @Deprecated
-    private Long limit;
+    private long limit;
 
     /**
      * backlog quota by size in byte.
@@ -57,7 +57,6 @@ public class BacklogQuotaImpl implements BacklogQuota {
     @Deprecated
     public long getLimit() {
         if (limitSize == null) {
-            // the limitSize and limit can't be both null
             return limit;
         }
         return limitSize;
@@ -71,7 +70,6 @@ public class BacklogQuotaImpl implements BacklogQuota {
 
     public long getLimitSize() {
         if (limitSize == null) {
-            // the limitSize and limit can't be both null
             return limit;
         }
         return limitSize;
diff --git 
a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/BacklogQuotaCompatibilityTest.java
 
b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/BacklogQuotaCompatibilityTest.java
index 659825c..f621a3a 100644
--- 
a/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/BacklogQuotaCompatibilityTest.java
+++ 
b/pulsar-metadata/src/test/java/org/apache/pulsar/metadata/BacklogQuotaCompatibilityTest.java
@@ -105,4 +105,24 @@ public class BacklogQuotaCompatibilityTest {
                 BacklogQuota.RetentionPolicy.consumer_backlog_eviction);
     }
 
+    @Test
+    public void testBackwardCompatibilityNullLimitAndLimitSize() throws 
IOException {
+        String oldPolicyStr = 
"{\"auth_policies\":{\"namespace_auth\":{},\"destination_auth\":{},"
+                + 
"\"subscription_auth_roles\":{}},\"replication_clusters\":[],\"backlog_quota_map\":"
+                + 
"{\"destination_storage\":{\"policy\":\"consumer_backlog_eviction\"}},"
+                + 
"\"clusterDispatchRate\":{},\"topicDispatchRate\":{},\"subscriptionDispatchRate\":{},"
+                + 
"\"replicatorDispatchRate\":{},\"clusterSubscribeRate\":{},\"publishMaxMessageRate\":{},"
+                + 
"\"latency_stats_sample_rate\":{},\"subscription_expiration_time_minutes\":0,\"deleted\":false,"
+                + 
"\"encryption_required\":false,\"subscription_auth_mode\":\"None\","
+                + 
"\"max_consumers_per_subscription\":0,\"offload_threshold\":-1,"
+                + 
"\"schema_auto_update_compatibility_strategy\":\"Full\",\"schema_compatibility_strategy\":"
+                + 
"\"UNDEFINED\",\"is_allow_auto_update_schema\":true,\"schema_validation_enforced\":false,"
+                + "\"subscription_types_enabled\":[]}\n";
+        Policies policies = simpleType.deserialize(null, 
oldPolicyStr.getBytes(), null);
+        
assertEquals(policies.backlog_quota_map.get(BacklogQuota.BacklogQuotaType.destination_storage).getLimitSize(),
+                0);
+        
assertEquals(policies.backlog_quota_map.get(BacklogQuota.BacklogQuotaType.destination_storage).getLimitTime(),
+                0);
+    }
+
 }

Reply via email to