mattisonchao opened a new pull request #14486:
URL: https://github.com/apache/pulsar/pull/14486


   ### Motivation
   
   I found a lot of stack trace logs when I use 25k consumers to consume 
messages.
   
   ```java
   2022-02-28T05:06:25,472+0000 [bookkeeper-ml-scheduler-OrderedScheduler-0-0] 
WARN  org.apache.bookkeeper.mledger.impl.ManagedCursorImpl - 
[public/default/persistent/bench%252F24412][ip-10-0-0-132_bench_sub_24412_880606346]
 Failed to flush mark-delete position
   org.apache.bookkeeper.mledger.ManagedLedgerException: 
java.lang.IllegalArgumentException: Mark deleting an already mark-deleted 
position
   Caused by: java.lang.IllegalArgumentException: Mark deleting an already 
mark-deleted position
     at 
org.apache.bookkeeper.mledger.impl.ManagedCursorImpl.setAcknowledgedPosition(ManagedCursorImpl.java:1580)
 ~[org.apache.pulsar-managed-ledger-2.9.1.jar:2.9.1]
     at 
org.apache.bookkeeper.mledger.impl.ManagedCursorImpl.asyncMarkDelete(ManagedCursorImpl.java:1718)
 ~[org.apache.pulsar-managed-ledger-2.9.1.jar:2.9.1]
     at 
org.apache.bookkeeper.mledger.impl.ManagedCursorImpl.flush(ManagedCursorImpl.java:3020)
 ~[org.apache.pulsar-managed-ledger-2.9.1.jar:2.9.1]
     at 
org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl.lambda$flushCursors$1(ManagedLedgerFactoryImpl.java:232)
 ~[org.apache.pulsar-managed-ledger-2.9.1.jar:2.9.1]
     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
     at 
org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl.lambda$flushCursors$2(ManagedLedgerFactoryImpl.java:232)
 ~[org.apache.pulsar-managed-ledger-2.9.1.jar:2.9.1]
     at 
java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4772)
 ~[?:?]
     at 
org.apache.bookkeeper.mledger.impl.ManagedLedgerFactoryImpl.flushCursors(ManagedLedgerFactoryImpl.java:228)
 ~[org.apache.pulsar-managed-ledger-2.9.1.jar:2.9.1]
     at 
org.apache.pulsar.common.util.Runnables$CatchingAndLoggingRunnable.run(Runnables.java:53)
 [org.apache.pulsar-pulsar-common-2.9.1.jar:2.9.1]
     at 
org.apache.bookkeeper.common.util.OrderedExecutor$TimedRunnable.run(OrderedExecutor.java:203)
 [org.apache.bookkeeper-bookkeeper-common-4.14.2.jar:4.14.2]
     at 
org.apache.bookkeeper.common.util.OrderedExecutor$TimedRunnable.run(OrderedExecutor.java:203)
 [org.apache.bookkeeper-bookkeeper-common-4.14.2.jar:4.14.2]
     at 
com.google.common.util.concurrent.MoreExecutors$ScheduledListeningDecorator$NeverSuccessfulListenableFutureTask.run(MoreExecutors.java:705)
 [com.google.guava-guava-30.1-jre.jar:?]
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) 
[?:?]
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) [?:?]
     at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
 [?:?]
     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
     at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 [io.netty-netty-common-4.1.72.Final.jar:4.1.72.Final]
     at java.lang.Thread.run(Thread.java:829) [?:?]
   ```
   
   I think the problem is caused by 
``ManagedCursorImpl#setAcknowledgedPosition`` being called in a concurrent 
environment. 
   
   ### Modifications
   
   - Logging with debug level failed because the marker location was already 
marked for deletion.
   
   ### Verifying this change
   
   - [x] Make sure that the change passes the CI checks.
   
   ### Documentation
   
   - [x] `no-need-doc` 
   
   


-- 
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