You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2022/04/29 06:25:54 UTC
[pulsar] 14/17: [fix][broker] fix resource group does not report usage (#15292)
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 a462731bbfb24c519d4a5edf163e6dd789039129
Author: WangJialing <65...@users.noreply.github.com>
AuthorDate: Wed Apr 27 15:29:05 2022 +0800
[fix][broker] fix resource group does not report usage (#15292)
* fix resource group does not report usage
* fix checkstyle
* fix mistake
Co-authored-by: wangjialing <wa...@cmss.chinamobile.com>
(cherry picked from commit 4560737bf9c0a8f419c37f6e2cb3a230dcfd4352)
---
.../broker/resourcegroup/ResourceQuotaCalculatorImpl.java | 4 ++--
.../broker/resourcegroup/ResourceQuotaCalculatorImplTest.java | 10 ++++++++++
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculatorImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculatorImpl.java
index ca83cae91c5..5dc50f2a255 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculatorImpl.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculatorImpl.java
@@ -108,7 +108,7 @@ public class ResourceQuotaCalculatorImpl implements ResourceQuotaCalculator {
final float toleratedDriftPercentage = ResourceGroupService.UsageReportSuppressionTolerancePercentage;
if (currentBytesUsed > 0) {
long diff = abs(currentBytesUsed - lastReportedBytes);
- float diffPercentage = (diff / currentBytesUsed) * 100;
+ float diffPercentage = (float) diff * 100 / lastReportedBytes;
if (diffPercentage > toleratedDriftPercentage) {
return true;
}
@@ -116,7 +116,7 @@ public class ResourceQuotaCalculatorImpl implements ResourceQuotaCalculator {
if (currentMessagesUsed > 0) {
long diff = abs(currentMessagesUsed - lastReportedMessages);
- float diffPercentage = (diff / currentMessagesUsed) * 100;
+ float diffPercentage = (float) diff * 100 / lastReportedMessages;
if (diffPercentage > toleratedDriftPercentage) {
return true;
}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculatorImplTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculatorImplTest.java
index 1a98838bb45..af8615936cc 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculatorImplTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/resourcegroup/ResourceQuotaCalculatorImplTest.java
@@ -112,5 +112,15 @@ public class ResourceQuotaCalculatorImplTest extends MockedPulsarServiceBaseTest
Assert.assertTrue(newQuota == config);
}
+ @Test
+ public void testNeedToReportLocalUsage() {
+ // If the percentage change (increase or decrease) in usage is more than 5% for
+ // either bytes or messages, send a report.
+ Assert.assertFalse(rqCalc.needToReportLocalUsage(1040, 1000, 104, 100, System.currentTimeMillis()));
+ Assert.assertFalse(rqCalc.needToReportLocalUsage(950, 1000, 95, 100, System.currentTimeMillis()));
+ Assert.assertTrue(rqCalc.needToReportLocalUsage(1060, 1000, 106, 100, System.currentTimeMillis()));
+ Assert.assertTrue(rqCalc.needToReportLocalUsage(940, 1000, 94, 100, System.currentTimeMillis()));
+ }
+
private ResourceQuotaCalculatorImpl rqCalc;
}
\ No newline at end of file