poorbarcode opened a new pull request, #23237:
URL: https://github.com/apache/pulsar/pull/23237

   ### Motivation
   
   Reproduce steps:
   - create a topic
   - enable replication, but the replicator failed to start
     - broker will trigger a delayed(`60s`) task to retry
   - unload the topic
   - Issue: the retry task will retry to restart the replicator again and again
   
   ```
   2024-08-30T11:41:11,955 - INFO  - [pulsar-io-64-13:PersistentTopic] - 
[persistent://public/ns1/tp_-0f9aa339-4e8e-404c-8afd-ea49aad60dba] Starting 
replicator to remote: r2
   2024-08-30T11:41:11,957 - ERROR - [pulsar-io-64-13:PersistentTopic] - 
[persistent://public/ns1/tp_-0f9aa339-4e8e-404c-8afd-ea49aad60dba] Policies 
update failed 
org.apache.pulsar.broker.service.BrokerServiceException$PersistenceException: 
org.apache.bookkeeper.mledger.ManagedLedgerException: ManagedLedger 
public/ns1/persistent/tp_-0f9aa339-4e8e-404c-8afd-ea49aad60dba has already been 
closed, scheduled retry in 60 seconds
   java.util.concurrent.CompletionException: 
org.apache.pulsar.broker.service.BrokerServiceException$PersistenceException: 
org.apache.bookkeeper.mledger.ManagedLedgerException: ManagedLedger 
public/ns1/persistent/tp_-0f9aa339-4e8e-404c-8afd-ea49aad60dba has already been 
closed
        at 
java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.andTree(CompletableFuture.java:1527)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.allOf(CompletableFuture.java:2419)
 ~[?:?]
        at 
org.apache.pulsar.common.util.FutureUtil.waitForAll(FutureUtil.java:60) 
~[classes/:?]
        at 
org.apache.pulsar.broker.service.persistent.PersistentTopic.lambda$checkReplication$69(PersistentTopic.java:1959)
 ~[classes/:?]
        at 
java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
 ~[?:?]
        at 
java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
 ~[?:?]
        at 
org.apache.pulsar.broker.service.persistent.PersistentTopic.checkReplication(PersistentTopic.java:1916)
 ~[classes/:?]
        at 
org.apache.pulsar.broker.service.persistent.PersistentTopic.checkReplicationAndRetryOnFailure(PersistentTopic.java:1861)
 ~[classes/:?]
        at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:96) 
[netty-common-4.1.111.Final.jar:4.1.111.Final]
        at 
io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:153) 
[netty-common-4.1.111.Final.jar:4.1.111.Final]
        at 
io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
 [netty-common-4.1.111.Final.jar:4.1.111.Final]
        at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
 [netty-common-4.1.111.Final.jar:4.1.111.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469)
 [netty-common-4.1.111.Final.jar:4.1.111.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) 
[netty-transport-4.1.111.Final.jar:4.1.111.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)
 [netty-common-4.1.111.Final.jar:4.1.111.Final]
        at 
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 
[netty-common-4.1.111.Final.jar:4.1.111.Final]
        at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 [netty-common-4.1.111.Final.jar:4.1.111.Final]
        at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
   Caused by: 
org.apache.pulsar.broker.service.BrokerServiceException$PersistenceException: 
org.apache.bookkeeper.mledger.ManagedLedgerException: ManagedLedger 
public/ns1/persistent/tp_-0f9aa339-4e8e-404c-8afd-ea49aad60dba has already been 
closed
        at 
org.apache.pulsar.broker.service.persistent.PersistentTopic$8.openCursorFailed(PersistentTopic.java:2119)
 ~[classes/:?]
        at 
org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl.asyncOpenCursor(ManagedLedgerImpl.java:942)
 ~[classes/:?]
        at 
org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl.asyncOpenCursor(ManagedLedgerImpl.java:930)
 ~[classes/:?]
        at 
org.apache.pulsar.broker.service.persistent.PersistentTopic.startReplicator(PersistentTopic.java:2104)
 ~[classes/:?]
        at 
org.apache.pulsar.broker.service.persistent.PersistentTopic.lambda$checkReplication$69(PersistentTopic.java:1942)
 ~[classes/:?]
        ... 14 more
   Caused by: org.apache.bookkeeper.mledger.ManagedLedgerException: 
ManagedLedger public/ns1/persistent/tp_-0f9aa339-4e8e-404c-8afd-ea49aad60dba 
has already been closed
   
   ```
   
   ### Modifications
   Do not retry to start a replicator after the topic is closed
   
   ### Documentation
   
   <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
   
   - [ ] `doc` <!-- Your PR contains doc changes. -->
   - [ ] `doc-required` <!-- Your PR changes impact docs and you will update 
later -->
   - [x] `doc-not-needed` <!-- Your PR changes do not impact docs -->
   - [ ] `doc-complete` <!-- Docs have been already added -->
   
   ### Matching PR in forked repository
   
   PR in forked repository: x


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to