From 12cbb1821b798efdf9bdef8772b83ef3a3efd717 Mon Sep 17 00:00:00 2001 From: hanmz Date: Wed, 12 Feb 2025 07:30:02 +0800 Subject: [PATCH] [improve][broker] Avoid PersistentReplicator.expireMessages logic compute backlog twice (#23957) --- .../broker/service/persistent/PersistentReplicator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java index f0076dca4aa760..41fecc9db673d3 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java @@ -670,8 +670,8 @@ public void updateMessageTTL(int messageTTLInSeconds) { @Override public boolean expireMessages(int messageTTLInSeconds) { - if ((cursor.getNumberOfEntriesInBacklog(false) == 0) - || (cursor.getNumberOfEntriesInBacklog(false) < MINIMUM_BACKLOG_FOR_EXPIRY_CHECK + long backlog = cursor.getNumberOfEntriesInBacklog(false); + if ((backlog == 0) || (backlog < MINIMUM_BACKLOG_FOR_EXPIRY_CHECK && !topic.isOldestMessageExpired(cursor, messageTTLInSeconds))) { // don't do anything for almost caught-up connected subscriptions return false;