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

jlli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new b2bac68  Fix missing rate limiter if brokerResourceEV becomes null due 
to ZK connection (#7470)
b2bac68 is described below

commit b2bac682ac43e435b4258c67a19010089f4f49aa
Author: Jialiang Li <j...@linkedin.com>
AuthorDate: Thu Sep 23 09:52:10 2021 -0700

    Fix missing rate limiter if brokerResourceEV becomes null due to ZK 
connection (#7470)
    
    Co-authored-by: Jack Li(Analytics Engineering) <j...@jlli-mn1.linkedin.biz>
---
 .../HelixExternalViewBasedQueryQuotaManager.java          | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/pinot-broker/src/main/java/org/apache/pinot/broker/queryquota/HelixExternalViewBasedQueryQuotaManager.java
 
b/pinot-broker/src/main/java/org/apache/pinot/broker/queryquota/HelixExternalViewBasedQueryQuotaManager.java
index 216f827..67df9c6 100644
--- 
a/pinot-broker/src/main/java/org/apache/pinot/broker/queryquota/HelixExternalViewBasedQueryQuotaManager.java
+++ 
b/pinot-broker/src/main/java/org/apache/pinot/broker/queryquota/HelixExternalViewBasedQueryQuotaManager.java
@@ -164,7 +164,8 @@ public class HelixExternalViewBasedQueryQuotaManager 
implements ClusterChangeHan
 
     if (brokerResource == null) {
       LOGGER.warn("Failed to init qps quota for table {}. No broker resource 
connected!", tableNameWithType);
-      buildEmptyOrResetRateLimiterInQueryQuotaEntity(tableNameWithType);
+      // It could be possible that brokerResourceEV is null due to ZK 
connection issue.
+      // In this case, the rate limiter should not be reset. Simply exit the 
method would be sufficient.
       return;
     }
 
@@ -204,21 +205,23 @@ public class HelixExternalViewBasedQueryQuotaManager 
implements ClusterChangeHan
           onlineCount, stat.getVersion());
     } else {
       RateLimiter rateLimiter = queryQuotaEntity.getRateLimiter();
+      double previousRate = -1;
       if (rateLimiter == null) {
         // Query quota is just added to the table.
         rateLimiter = RateLimiter.create(perBrokerRate);
         queryQuotaEntity.setRateLimiter(rateLimiter);
       } else {
         // Query quota gets updated to a new value.
+        previousRate = rateLimiter.getRate();
         rateLimiter.setRate(perBrokerRate);
       }
       queryQuotaEntity.setNumOnlineBrokers(onlineCount);
       queryQuotaEntity.setOverallRate(overallRate);
       queryQuotaEntity.setTableConfigStatVersion(stat.getVersion());
       LOGGER.info(
-          "Rate limiter for table: {} has been updated. Overall rate: {}. 
Per-broker rate: {}. Number of online "
-              + "broker instances: {}. Table config stat version: {}", 
tableNameWithType, overallRate, perBrokerRate,
-          onlineCount, stat.getVersion());
+          "Rate limiter for table: {} has been updated. Overall rate: {}. 
Previous per-broker rate: {}. New "
+              + "per-broker rate: {}. Number of online broker instances: {}. 
Table config stat version: {}",
+          tableNameWithType, overallRate, previousRate, perBrokerRate, 
onlineCount, stat.getVersion());
     }
     addMaxBurstQPSCallbackTableGaugeIfNeeded(tableNameWithType, 
queryQuotaEntity);
     if (isQueryRateLimitDisabled()) {
@@ -424,8 +427,8 @@ public class HelixExternalViewBasedQueryQuotaManager 
implements ClusterChangeHan
         queryQuotaEntity.setOverallRate(overallRate);
         queryQuotaEntity.setTableConfigStatVersion(stat.getVersion());
         LOGGER.info("Rate limiter for table: {} has been updated. Overall 
rate: {}. Previous per-broker rate: {}. New "
-                + "per-broker rate: {}. Number of online broker instances: 
{}", tableNameWithType, overallRate,
-            previousRate, latestRate, onlineBrokerCount);
+                + "per-broker rate: {}. Number of online broker instances: {}. 
Table config stat version: {}.",
+            tableNameWithType, overallRate, previousRate, latestRate, 
onlineBrokerCount, stat.getVersion());
         numRebuilt++;
       }
     }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to