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 33e51251dafd65aa70374ce530c5f103d8134a2e
Author: Lari Hotari <[email protected]>
AuthorDate: Wed May 6 11:05:26 2026 +0300

    [fix][broker] Skip backlog-quota eviction on fenced/closing topics (#25684)
    
    (cherry picked from commit 1471f9f943a39454268a7b5028d37abbfb652635)
---
 .../org/apache/pulsar/broker/service/BacklogQuotaManager.java | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BacklogQuotaManager.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BacklogQuotaManager.java
index 5e811ff1dce..15f218ce216 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BacklogQuotaManager.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BacklogQuotaManager.java
@@ -85,6 +85,17 @@ public class BacklogQuotaManager {
      */
     public void handleExceededBacklogQuota(PersistentTopic persistentTopic, 
BacklogQuotaType backlogQuotaType,
                                            boolean 
preciseTimeBasedBacklogQuotaCheck) {
+        if (persistentTopic.isFenced() || 
persistentTopic.isClosingOrDeleting()) {
+            // Skip eviction work on a topic that is being torn down or 
transiently fenced.
+            // Mutating cursors here (skipEntries / markDeletePosition) 
contends with the
+            // delete path and can keep namespace force-delete from completing 
in time;
+            // the entries are about to be discarded anyway.
+            if (log.isDebugEnabled()) {
+                log.debug("Skipping backlog-quota eviction on fenced/closing 
topic {}, backlog quota type {}",
+                        persistentTopic.getName(), backlogQuotaType);
+            }
+            return;
+        }
         BacklogQuota quota = persistentTopic.getBacklogQuota(backlogQuotaType);
         BacklogQuotaMetrics topicBacklogQuotaMetrics =
                 
persistentTopic.getPersistentTopicMetrics().getBacklogQuotaMetrics();

Reply via email to