geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (GEODE-3407) JMX and membership may deadlock on CacheFactory.getAnyInstance
Date Tue, 08 Aug 2017 00:12:00 GMT

    [ https://issues.apache.org/jira/browse/GEODE-3407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16117599#comment-16117599
] 

ASF GitHub Bot commented on GEODE-3407:
---------------------------------------

GitHub user kirklund opened a pull request:

    https://github.com/apache/geode/pull/697

    GEODE-3407: fix deadlock between JMX and Reconnect

    Change InternalClientMembership to not synchronize on CacheFactory
    by accepting Cache parameter from CacheServerBridge.
    
    New regression test confirms bug and this fix.
    
    Thank you for submitting a contribution to Apache Geode.
    
    In order to streamline the review of the contribution we ask you
    to ensure the following steps have been taken:
    
    ### For all changes:
    - [x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?
    
    - [x] Has your PR been rebased against the latest commit within the target branch (typically
`develop`)?
    
    - [x] Is your initial contribution a single, squashed commit?
    
    - [x] Does `gradlew build` run cleanly?
    
    - [x] Have you written or updated unit tests to verify your changes?
    
    - [x] If adding new dependencies to the code, are these dependencies licensed in a way
that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)?
    
    ### Note:
    Please ensure that once the PR is submitted, you check travis-ci for build issues and
    submit an update to your PR as soon as possible. If you need help, please send an
    email to dev@geode.apache.org.


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/kirklund/geode feature/GEM-1256

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/geode/pull/697.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #697
    
----
commit ba7a323cbbd68f4de8b0968038fe1a604c861fcb
Author: Kirk Lund <klund@apache.org>
Date:   2017-08-07T23:39:04Z

    GEODE-3407: fix deadlock between JMX and Membership
    
    Change InternalClientMembership to not synchronize on CacheFactory
    by accepting Cache parameter from CacheServerBridge.
    
    New regression test confirms bug and this fix.

----


> JMX and membership may deadlock on CacheFactory.getAnyInstance
> --------------------------------------------------------------
>
>                 Key: GEODE-3407
>                 URL: https://issues.apache.org/jira/browse/GEODE-3407
>             Project: Geode
>          Issue Type: Bug
>          Components: jmx, membership
>            Reporter: Kirk Lund
>            Assignee: Kirk Lund
>
> {noformat}
> "CloserThread":
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.tryReconnect(InternalDistributedSystem.java:2628)
> 	- waiting to lock <0x0000000244fc5c18> (a java.lang.Class for org.apache.geode.internal.cache.GemFireCacheImpl)
> 	- locked <0x0000000247556560> (a java.lang.Class for org.apache.geode.cache.CacheFactory)
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.disconnect(InternalDistributedSystem.java:1055)
> 	at org.apache.geode.distributed.internal.DistributionManager$MyListener.membershipFailure(DistributionManager.java:4822)
> 	at org.apache.geode.distributed.internal.membership.jgroup.JGroupMembershipManager.uncleanShutdown(JGroupMembershipManager.java:2732)
> 	at org.apache.geode.distributed.internal.membership.jgroup.JGroupMembershipManager$Puller.channelClosing(JGroupMembershipManager.java:1212)
> 	at org.jgroups.JChannel$CloserThread.run(JChannel.java:1617)
> {noformat}
> {noformat}
> "ReconnectThread":
> 	at org.apache.geode.management.internal.LocalManager.unMarkForFederation(LocalManager.java:243)
> 	- waiting to lock <0x0000000351819a00> (a java.lang.Object)
> 	at org.apache.geode.management.internal.LocalManager.cleanUpResources(LocalManager.java:284)
> 	at org.apache.geode.management.internal.LocalManager.stopManager(LocalManager.java:441)
> 	at org.apache.geode.management.internal.SystemManagementService.close(SystemManagementService.java:261)
> 	- locked <0x000000024cfdfe38> (a java.util.HashMap)
> 	at org.apache.geode.management.internal.beans.ManagementAdapter.handleCacheRemoval(ManagementAdapter.java:775)
> 	at org.apache.geode.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:115)
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2249)
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:505)
> 	at org.apache.geode.internal.cache.GemFireCacheImpl.close(GemFireCacheImpl.java:1826)
> 	- locked <0x0000000244fc5c18> (a java.lang.Class for org.apache.geode.internal.cache.GemFireCacheImpl)
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.disconnect(InternalDistributedSystem.java:1389)
> 	- locked <0x0000000244fc5c18> (a java.lang.Class for org.apache.geode.internal.cache.GemFireCacheImpl)
> 	at org.apache.geode.distributed.internal.InternalDistributedSystem.disconnect(InternalDistributedSystem.java:1058)
> 	at org.apache.geode.distributed.internal.DistributionManager$MyListener.membershipFailure(DistributionManager.java:4822)
> 	at org.apache.geode.distributed.internal.membership.jgroup.JGroupMembershipManager.uncleanShutdown(JGroupMembershipManager.java:2732)
> 	at org.apache.geode.distributed.internal.membership.jgroup.JGroupMembershipManager$Puller.channelClosing(JGroupMembershipManager.java:1212)
> 	at org.jgroups.JChannel$CloserThread.run(JChannel.java:1617)
> {noformat}
> {noformat}
> "Management Task":
> 	at org.apache.geode.cache.CacheFactory.getAnyInstance(CacheFactory.java:293)
> 	- waiting to lock <0x0000000247556560> (a java.lang.Class for org.apache.geode.cache.CacheFactory)
> 	at org.apache.geode.internal.cache.tier.InternalBridgeMembership.getClientQueueSizes(InternalBridgeMembership.java:358)
> 	at org.apache.geode.management.internal.beans.CacheServerBridge.getNumSubscriptions(CacheServerBridge.java:666)
> 	at org.apache.geode.management.internal.beans.CacheServerMBean.getNumSubscriptions(CacheServerMBean.java:288)
> 	at sun.reflect.GeneratedMethodAccessor300.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.apache.geode.management.internal.FederationComponent.refreshObjectState(FederationComponent.java:175)
> 	at org.apache.geode.management.internal.LocalManager$ManagementTask.run(LocalManager.java:376)
> 	- locked <0x0000000351819a00> (a java.lang.Object)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> 	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> 	at org.apache.geode.management.internal.LocalManager$1$1.run(LocalManager.java:121)
> 	at java.lang.Thread.run(Thread.java:745)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message