Skip to content

Commit 81c94c8

Browse files
zjxxzjwangzjxxzjwang
and
zjxxzjwang
authored
[fix][broker] Resolve the issue of frequent updates in message expiration deletion rate (#24190)
Co-authored-by: zjxxzjwang <zjxxzjwang@tencent.com>
1 parent dc62142 commit 81c94c8

File tree

4 files changed

+7
-2
lines changed

4 files changed

+7
-2
lines changed

pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,11 @@ public boolean expireMessages(Position messagePosition) {
165165
}
166166

167167

168-
private void updateRates() {
168+
public void updateRates() {
169169
msgExpired.calculateRate();
170170
}
171171

172172
public double getMessageExpiryRate() {
173-
updateRates();
174173
return msgExpired.getRate();
175174
}
176175

pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,7 @@ public void deleteFailed(ManagedLedgerException exception, Object ctx) {
639639
public void updateRates() {
640640
msgOut.calculateRate();
641641
msgExpired.calculateRate();
642+
expiryMonitor.updateRates();
642643

643644
stats.msgRateOut = msgOut.getRate();
644645
stats.msgThroughputOut = msgOut.getValueRate();

pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2536,6 +2536,7 @@ public void updateRates(NamespaceStats nsStats, NamespaceBundleStats bundleStats
25362536
// Populate subscription specific stats here
25372537
topicStatsStream.writePair("msgBacklog",
25382538
subscription.getNumberOfEntriesInBacklog(true));
2539+
subscription.getExpiryMonitor().updateRates();
25392540
topicStatsStream.writePair("msgRateExpired", subscription.getExpiredMessageRate());
25402541
topicStatsStream.writePair("msgRateOut", subMsgRateOut);
25412542
topicStatsStream.writePair("messageAckRate", subMsgAckRate);

pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,10 @@ public void testPerTopicExpiredStat() throws Exception {
810810
pulsar.getBrokerService().getTopicIfExists(topic1).get().get().getSubscription(subName);
811811
PersistentSubscription sub2 = (PersistentSubscription)
812812
pulsar.getBrokerService().getTopicIfExists(topic2).get().get().getSubscription(subName);
813+
Awaitility.await().until(() -> sub.getExpiryMonitor().getTotalMessageExpired() != 0);
814+
Awaitility.await().until(() -> sub2.getExpiryMonitor().getTotalMessageExpired() != 0);
815+
sub.getExpiryMonitor().updateRates();
816+
sub2.getExpiryMonitor().updateRates();
813817
Awaitility.await().until(() -> sub.getExpiredMessageRate() != 0.0);
814818
Awaitility.await().until(() -> sub2.getExpiredMessageRate() != 0.0);
815819

0 commit comments

Comments
 (0)