[
https://issues.apache.org/jira/browse/QPID-6259?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alex Rudyy updated QPID-6259:
-----------------------------
Status: Reviewable (was: In Progress)
> [Java Broker] On DatabaseException in BDB committer thread, stopping of
> Coalescing committer in the same committer thread hangs because it waits for
> committer thread to finish running
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-6259
> URL: https://issues.apache.org/jira/browse/QPID-6259
> Project: Qpid
> Issue Type: Bug
> Components: Java Broker
> Affects Versions: 0.30
> Reporter: Alex Rudyy
> Assignee: Alex Rudyy
> Attachments:
> QPID-6259-Fix-committer-thread-hang-when-closing-on-database-exception.diff
>
>
> When DatabaseException occurs in commit thread, stopping of Coalescing
> committer can hang because it is invoked in commit thread and there is a code
> there to wait until coalescing committer thread finishes running
> {noformat}
> "Commit-Thread-default" prio=10 tid=0x00007f1750c28800 nid=0x12fb in
> Object.wait() [0x00007f16150dc000]
> java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007a59fe090> (a
> org.apache.qpid.server.store.berkeleydb.CoalescingCommiter$CommitThread)
> at java.lang.Thread.join(Thread.java:1281)
> - locked <0x00000007a59fe090> (a
> org.apache.qpid.server.store.berkeleydb.CoalescingCommiter$CommitThread)
> at java.lang.Thread.join(Thread.java:1355)
> at
> org.apache.qpid.server.store.berkeleydb.CoalescingCommiter.stop(CoalescingCommiter.java:55)
> at
> org.apache.qpid.server.store.berkeleydb.StandardEnvironmentFacade.close(StandardEnvironmentFacade.java:152)
> at
> org.apache.qpid.server.store.berkeleydb.CoalescingCommiter$CommitThread.processJobs(CoalescingCommiter.java:275)
> at
> org.apache.qpid.server.store.berkeleydb.CoalescingCommiter$CommitThread.run(CoalescingCommiter.java:214)
> {noformat}
> That might prevent broker from shutdown with kill <pid>:
> {noformat}
> "QpidBrokerShutdownHook" prio=10 tid=0x00007f1498001000 nid=0x17cd in
> Object.wait() [0x00007f14af9f7000]
> java.lang.Thread.State: WAITING (on object monitor)
> at java.lang.Object.wait(Native Method)
> - waiting on <0x00000007a59fe090> (a
> org.apache.qpid.server.store.berkeleydb.CoalescingCommiter$CommitThread)
> at java.lang.Thread.join(Thread.java:1281)
> - locked <0x00000007a59fe090> (a
> org.apache.qpid.server.store.berkeleydb.CoalescingCommiter$CommitThread)
> at java.lang.Thread.join(Thread.java:1355)
> at
> org.apache.qpid.server.store.berkeleydb.CoalescingCommiter.stop(CoalescingCommiter.java:55)
> at
> org.apache.qpid.server.store.berkeleydb.StandardEnvironmentFacade.close(StandardEnvironmentFacade.java:152)
> at
> org.apache.qpid.server.store.berkeleydb.BDBMessageStore.closeMessageStore(BDBMessageStore.java:92)
> at
> org.apache.qpid.server.virtualhost.AbstractVirtualHost.closeMessageStore(AbstractVirtualHost.java:708)
> at
> org.apache.qpid.server.virtualhost.AbstractVirtualHost.onClose(AbstractVirtualHost.java:691)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject.close(AbstractConfiguredObject.java:495)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject$1.performAction(AbstractConfiguredObject.java:467)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject$1.performAction(AbstractConfiguredObject.java:463)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject.applyToChildren(AbstractConfiguredObject.java:748)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject.closeChildren(AbstractConfiguredObject.java:462)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject.close(AbstractConfiguredObject.java:494)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject$1.performAction(AbstractConfiguredObject.java:467)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject$1.performAction(AbstractConfiguredObject.java:463)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject.applyToChildren(AbstractConfiguredObject.java:748)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject.closeChildren(AbstractConfiguredObject.java:462)
> at
> org.apache.qpid.server.model.AbstractConfiguredObject.close(AbstractConfiguredObject.java:494)
> at
> org.apache.qpid.server.registry.ApplicationRegistry.close(ApplicationRegistry.java:104)
> at org.apache.qpid.server.Broker.shutdown(Broker.java:101)
> at org.apache.qpid.server.Broker.shutdown(Broker.java:85)
> at
> org.apache.qpid.server.Broker$ShutdownService$1.run(Broker.java:319)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.security.auth.Subject.doAs(Subject.java:356)
> at org.apache.qpid.server.Broker$ShutdownService.run(Broker.java:313)
> at java.lang.Thread.run(Thread.java:745)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]