Skip to content

S3Storage OverCapacityException deadlock #581

@superhx

Description

@superhx
"log-meta-schedule-executor" #184 daemon prio=5 os_prio=31 cpu=1.95ms elapsed=303.74s tid=0x000000012d701e00 nid=0x18b03 waiting on condition  [0x0000000293cf1000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@17.0.9/Native Method)
        - parking to wait for  <0x00000007f59a0ec8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@17.0.9/LockSupport.java:211)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@17.0.9/AbstractQueuedSynchronizer.java:715)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(java.base@17.0.9/AbstractQueuedSynchronizer.java:1027)
        at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(java.base@17.0.9/ReentrantReadWriteLock.java:738)
        at com.automq.stream.s3.S3Storage.append0(S3Storage.java:293)
        at com.automq.stream.s3.S3Storage.append(S3Storage.java:261)
        at com.automq.stream.s3.S3Stream.append0(S3Stream.java:170)
        at com.automq.stream.s3.S3Stream.lambda$append$0(S3Stream.java:151)
        at com.automq.stream.s3.S3Stream$$Lambda$1874/0x0000009001733940.get(Unknown Source)
        at com.automq.stream.utils.FutureUtil.exec(FutureUtil.java:61)
        at com.automq.stream.s3.S3Stream.append(S3Stream.java:147)
        at kafka.log.streamaspect.AlwaysSuccessClient$StreamImpl.append0(AlwaysSuccessClient.java:267)
        at kafka.log.streamaspect.AlwaysSuccessClient$StreamImpl.append(AlwaysSuccessClient.java:259)
        at kafka.log.streamaspect.MetaStream.append0(MetaStream.java:146)
        at kafka.log.streamaspect.MetaStream.doCompaction(MetaStream.java:318)
        at kafka.log.streamaspect.MetaStream$$Lambda$1901/0x000000900173da58.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(java.base@17.0.9/FutureTask.java:264)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(java.base@17.0.9/ScheduledThreadPoolExecutor.java:304)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.9/ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.9/ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(java.base@17.0.9/Thread.java:840)

   Locked ownable synchronizers:
        - <0x00000007f57a3260> (a java.util.concurrent.ThreadPoolExecutor$Worker)
        - <0x00000007fde307e8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)

"wal-calculator-update-confirm-offset" #146 daemon prio=5 os_prio=31 cpu=14.22ms elapsed=306.57s tid=0x000000012db29000 nid=0x16303 waiting on condition  [0x0000000288506000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@17.0.9/Native Method)
        - parking to wait for  <0x00000007f59a0ec8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(java.base@17.0.9/LockSupport.java:211)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@17.0.9/AbstractQueuedSynchronizer.java:715)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@17.0.9/AbstractQueuedSynchronizer.java:938)
        at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(java.base@17.0.9/ReentrantReadWriteLock.java:959)
        at com.automq.stream.s3.S3Storage$WALConfirmOffsetCalculator.calculate(S3Storage.java:641)
        - locked <0x00000007f59a0e88> (a com.automq.stream.s3.S3Storage$WALConfirmOffsetCalculator)
        at com.automq.stream.s3.S3Storage$WALConfirmOffsetCalculator.update(S3Storage.java:628)
        at com.automq.stream.s3.S3Storage$WALConfirmOffsetCalculator$$Lambda$1446/0x000000900165b9e0.run(Unknown Source)
        at java.util.concurrent.Executors$RunnableAdapter.call(java.base@17.0.9/Executors.java:539)
        at java.util.concurrent.FutureTask.runAndReset(java.base@17.0.9/FutureTask.java:305)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(java.base@17.0.9/ScheduledThreadPoolExecutor.java:305)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.9/ThreadPoolExecutor.java:1136)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.9/ThreadPoolExecutor.java:635)
        at java.lang.Thread.run(java.base@17.0.9/Thread.java:840)

   Locked ownable synchronizers:
        - <0x00000007f5768ec8> (a java.util.concurrent.ThreadPoolExecutor$Worker)

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions