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();
