This is an automated email from the ASF dual-hosted git repository. penghui pushed a commit to branch branch-2.10 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit aef4dd202ca5692e07734ca28bc23ec901703b66 Author: WangJialing <[email protected]> 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 <[email protected]> (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 f16f960831e..13e17d7c682 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 @@ -111,5 +111,15 @@ public class ResourceQuotaCalculatorImplTest extends MockedPulsarServiceBaseTest Assert.assertEquals(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
