[jboss-jira] [JBoss JIRA] (WFLY-13686) Deadlock on Wildfly startup

Cheng Fang (Jira) issues at jboss.org
Wed Jul 22 10:38:40 EDT 2020


    [ https://issues.redhat.com/browse/WFLY-13686?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14277420#comment-14277420 ] 

Cheng Fang commented on WFLY-13686:
-----------------------------------

may be somewhat related to WFLY-10879 

> Deadlock on Wildfly startup
> ---------------------------
>
>                 Key: WFLY-13686
>                 URL: https://issues.redhat.com/browse/WFLY-13686
>             Project: WildFly
>          Issue Type: Bug
>          Components: EJB
>    Affects Versions: 20.0.1.Final
>            Reporter: K G
>            Assignee: Cheng Fang
>            Priority: Major
>
> On Wildfly startup there can be a deadlock related to ejb/singleton access and more specifically: StartupAwaitInterceptor and ContainerManagedConcurrencyInterceptor. This can happen when there is a too early client request (occurring during app startup) or a request caused by thread running in managed executor (that's what happened to me). A thread that is blocked by StartupAwaitInterceptor also holds a lock from ContainerManagedConcurrencyInterceptor and blocks other threads. This is related to the following pull request, link to the comment: [https://github.com/wildfly/wildfly/pull/9009#issuecomment-656147415] .
> I guess possible solution is to change interceptors ordering. Other possibility is to add "privileged" flag (see pull request for explanation) to threads from managed thread factory but in this case a too early client request could also cause a dealock.
>  
> Scenario of deadlock (description copied from pull request's comment):
>  * startup singleton A's initialization starts and completes successfully
>  * startup singleton B is initializing and during that it starts a task X via managedThreadExecutor
>  * X wants to access A and is blocked by StartupCountdown.await
>  * meanwhile B continues initializing and wants to access A but X already holds a lock on A (I can see ContainerManagedConcurrencyInterceptor.processInvocation in the tread dump) hence after 5000ms B's initialization fails as well as whole deployment



--
This message was sent by Atlassian Jira
(v7.13.8#713008)



More information about the jboss-jira mailing list