You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Alex Rudyy (JIRA)" <ji...@apache.org> on 2014/12/04 16:14:12 UTC

[jira] [Updated] (QPID-6259) [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

     [ https://issues.apache.org/jira/browse/QPID-6259?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alex Rudyy updated QPID-6259:
-----------------------------
    Attachment: QPID-6259-Fix-committer-thread-hang-when-closing-on-database-exception.diff

Attached patch with a fix

> [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
>         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: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org