Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: deadlock while closing non-shared consumer #1591

Merged
merged 2 commits into from
Apr 17, 2018

Conversation

rdhabalia
Copy link
Contributor

Motivation

Fix possible deadlock while closing non-shared consumer.

main" #1 prio=5 os_prio=31 tid=0x00007fad6e802800 nid=0x1c03 waiting on condition [0x000070000c802000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000007416a9818> (a org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap$Section)
        at java.util.concurrent.locks.StampedLock.acquireWrite(StampedLock.java:1119)
        at java.util.concurrent.locks.StampedLock.writeLock(StampedLock.java:354)
        at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap$Section.remove(ConcurrentOpenHashMap.java:305)
        at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap$Section.access$200(ConcurrentOpenHashMap.java:181)
        at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap.remove(ConcurrentOpenHashMap.java:136)
        at org.apache.pulsar.broker.service.persistent.PersistentTopic.removeSubscription(PersistentTopic.java:650)
        at org.apache.pulsar.broker.service.persistent.PersistentSubscription.removeConsumer(PersistentSubscription.java:156)
        - locked <0x00000007452139d8> (a org.apache.pulsar.broker.service.persistent.PersistentSubscription)
        at org.apache.pulsar.broker.service.Consumer.close(Consumer.java:358)
        at org.apache.pulsar.broker.service.Consumer.disconnect(Consumer.java:366)
        at org.apache.pulsar.broker.service.AbstractDispatcherSingleActiveConsumer$$Lambda$471/975941670.accept(Unknown Source)
        at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:890)
        at org.apache.pulsar.broker.service.AbstractDispatcherSingleActiveConsumer.disconnectAllConsumers(AbstractDispatcherSingleActiveConsumer.java:189)
        - locked <0x0000000745213aa8> (a org.apache.pulsar.broker.service.persistent.PersistentDispatcherSingleActiveConsumer)
        at org.apache.pulsar.broker.service.AbstractDispatcherSingleActiveConsumer.close(AbstractDispatcherSingleActiveConsumer.java:176)
        at org.apache.pulsar.broker.service.persistent.PersistentSubscription.disconnect(PersistentSubscription.java:535)
        - locked <0x00000007452139d8> (a org.apache.pulsar.broker.service.persistent.PersistentSubscription)
        at org.apache.pulsar.broker.service.persistent.PersistentTopic.lambda$16(PersistentTopic.java:760)
        at org.apache.pulsar.broker.service.persistent.PersistentTopic$$Lambda$470/114109618.accept(Unknown Source)
        at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap$Section.forEach(ConcurrentOpenHashMap.java:386)
        at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap.forEach(ConcurrentOpenHashMap.java:160)
        at org.apache.pulsar.broker.service.persistent.PersistentTopic.close(PersistentTopic.java:760)
        at org.apache.pulsar.broker.service.BrokerService$$Lambda$466/399685190.apply(Unknown Source)
        at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:981)
        at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2124)
        at org.apache.pulsar.broker.service.BrokerService.lambda$22(BrokerService.java:924)
        at org.apache.pulsar.broker.service.BrokerService$$Lambda$465/1261714285.accept(Unknown Source)
        at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap$Section.forEach(ConcurrentOpenHashMap.java:386)
        at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap.forEach(ConcurrentOpenHashMap.java:160)
        at org.apache.pulsar.broker.service.BrokerService.unloadServiceUnit(BrokerService.java:919)
        at org.apache.pulsar.broker.namespace.OwnedBundle.handleUnloadRequest(OwnedBundle.java:125)
        at org.apache.pulsar.broker.namespace.NamespaceService.unloadNamespaceBundle(NamespaceService.java:487)
        at org.apache.pulsar.broker.service.BrokerService.lambda$3(BrokerService.java:408)
        at org.apache.pulsar.broker.service.BrokerService$$Lambda$464/659566172.accept(Unknown Source)
        at java.lang.Iterable.forEach(Iterable.java:75)
        at org.apache.pulsar.broker.service.BrokerService.unloadNamespaceBundlesGracefully(BrokerService.java:405)
        at org.apache.pulsar.broker.service.BrokerService.close(BrokerService.java:360)
        at org.apache.pulsar.broker.PulsarService.close(PulsarService.java:211)

@rdhabalia rdhabalia added the type/bug The PR fixed a bug or issue reported a bug label Apr 16, 2018
@rdhabalia rdhabalia added this to the 2.0.0-incubating milestone Apr 16, 2018
@rdhabalia rdhabalia self-assigned this Apr 16, 2018
Copy link
Contributor

@merlimat merlimat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@merlimat merlimat merged commit 39112f4 into apache:master Apr 17, 2018
@merlimat merlimat added this to Proposed to backport in Pulsar 1.22.1 patch Release via automation Apr 23, 2018
@jai1 jai1 moved this from Proposed to backport to In Progress in Pulsar 1.22.1 patch Release May 2, 2018
@jai1 jai1 moved this from In Progress to Merged for 1.22.1 in Pulsar 1.22.1 patch Release May 2, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/bug The PR fixed a bug or issue reported a bug
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

2 participants