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

lhotari pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 5bdc5aa589c74432332faa4f439336c99e0d64af
Author: fengyubiao <[email protected]>
AuthorDate: Mon Oct 27 11:10:38 2025 +0800

    [improve][broker]Skip to mark delete if the target position of expira… 
(#24881)
    
    Co-authored-by: Jiwei Guo <[email protected]>
    Co-authored-by: Zixuan Liu <[email protected]>
    (cherry picked from commit 14b08210a02a4cd7dcffdd941a27d9fd7092a2d4)
---
 .../broker/service/persistent/PersistentMessageExpiryMonitor.java     | 4 ++++
 1 file changed, 4 insertions(+)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java
index a51f02b0c0d..d0194a0d2fa 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentMessageExpiryMonitor.java
@@ -232,6 +232,10 @@ public class PersistentMessageExpiryMonitor implements 
FindEntryCallback, Messag
     @Override
     public void findEntryComplete(Position position, Object ctx) {
         if (position != null) {
+            var markDeletedPosition = cursor.getMarkDeletedPosition();
+            if (markDeletedPosition != null && 
markDeletedPosition.compareTo(position) >= 0) {
+                return;
+            }
             log.info("[{}][{}] Expiring all messages until position {}", 
topicName, subName, position);
             Position prevMarkDeletePos = cursor.getMarkDeletedPosition();
             cursor.asyncMarkDelete(position, cursor.getProperties(), 
markDeleteCallback,

Reply via email to