You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Samir Ahmic (JIRA)" <ji...@apache.org> on 2015/12/22 18:08:46 UTC

[jira] [Commented] (HBASE-15030) Deadlock in master TableNamespaceManager while running IntegrationTestDDLMasterFailover

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

Samir Ahmic commented on HBASE-15030:
-------------------------------------

Removing synchronized make sens let me apply patch on cluster and run IntegrationTestDDLMasterFailover to see is deadlock gone.

> Deadlock in master TableNamespaceManager while running IntegrationTestDDLMasterFailover
> ---------------------------------------------------------------------------------------
>
>                 Key: HBASE-15030
>                 URL: https://issues.apache.org/jira/browse/HBASE-15030
>             Project: HBase
>          Issue Type: Bug
>          Components: proc-v2
>    Affects Versions: 2.0.0, 1.3.0
>            Reporter: Samir Ahmic
>            Assignee: Samir Ahmic
>         Attachments: HBASE-15030-v0.patch
>
>
> I was running IntegrationTestDDLMasterFailover on distributed cluster when i notice this. Here is relevant part of master's jstack:
> {code}
> "ProcedureExecutor-1" daemon prio=10 tid=0x00007fd2d407f800 nid=0x3332 waiting for monitor entry [0x00007fd2c2834000]
>    java.lang.Thread.State: BLOCKED (on object monitor)
>         at org.apache.hadoop.hbase.master.TableNamespaceManager.releaseExclusiveLock(TableNamespaceManager.java:157)
>         - waiting to lock <0x0000000725c36a48> (a org.apache.hadoop.hbase.master.TableNamespaceManager)
>         at org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.releaseLock(CreateNamespaceProcedure.java:216)
>         at org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.releaseLock(CreateNamespaceProcedure.java:43)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:842)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:794)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$400(ProcedureExecutor.java:75)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$2.run(ProcedureExecutor.java:479)
>    Locked ownable synchronizers:
>         - <0x000000072574b330> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
> "ProcedureExecutor-3" daemon prio=10 tid=0x00007fd2d41e5800 nid=0x3334 waiting on condition [0x00007fd2c2632000]
>    java.lang.Thread.State: TIMED_WAITING (parking)
>         at sun.misc.Unsafe.park(Native Method)
>         - parking to wait for  <0x000000072574b330> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
>         at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireNanos(AbstractQueuedSynchronizer.java:929)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireNanos(AbstractQueuedSynchronizer.java:1245)
>         at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.tryLock(ReentrantReadWriteLock.java:1115)
>         at org.apache.hadoop.hbase.master.TableNamespaceManager.acquireExclusiveLock(TableNamespaceManager.java:150)
>         - locked <0x0000000725c36a48> (a org.apache.hadoop.hbase.master.TableNamespaceManager)
>         at org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.acquireLock(CreateNamespaceProcedure.java:210)
>         at org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.acquireLock(CreateNamespaceProcedure.java:43)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeRollback(ProcedureExecutor.java:941)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:821)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:794)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$400(ProcedureExecutor.java:75)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$2.run(ProcedureExecutor.java:479)
>    Locked ownable synchronizers:
>         - None
> Found one Java-level deadlock:
> =============================
> "ProcedureExecutor-3":
>   waiting for ownable synchronizer 0x000000072574b330, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
>   which is held by "ProcedureExecutor-1"
> "ProcedureExecutor-1":
>   waiting to lock monitor 0x00007fd2cc328908 (object 0x0000000725c36a48, a org.apache.hadoop.hbase.master.TableNamespaceManager),
>   which is held by "ProcedureExecutor-3"
> Java stack information for the threads listed above:
> ===================================================
> "ProcedureExecutor-3":
>         at sun.misc.Unsafe.park(Native Method)
>         - parking to wait for  <0x000000072574b330> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
>         at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireNanos(AbstractQueuedSynchronizer.java:929)
>         at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireNanos(AbstractQueuedSynchronizer.java:1245)
>         at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.tryLock(ReentrantReadWriteLock.java:1115)
>         at org.apache.hadoop.hbase.master.TableNamespaceManager.acquireExclusiveLock(TableNamespaceManager.java:150)
>         - locked <0x0000000725c36a48> (a org.apache.hadoop.hbase.master.TableNamespaceManager)
>         at org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.acquireLock(CreateNamespaceProcedure.java:210)
>         at org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.acquireLock(CreateNamespaceProcedure.java:43)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeRollback(ProcedureExecutor.java:941)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:821)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:794)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$400(ProcedureExecutor.java:75)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$2.run(ProcedureExecutor.java:479)
> "ProcedureExecutor-1":
>         at org.apache.hadoop.hbase.master.TableNamespaceManager.releaseExclusiveLock(TableNamespaceManager.java:157)
>         - waiting to lock <0x0000000725c36a48> (a org.apache.hadoop.hbase.master.TableNamespaceManager)
>         at org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.releaseLock(CreateNamespaceProcedure.java:216)
>         at org.apache.hadoop.hbase.master.procedure.CreateNamespaceProcedure.releaseLock(CreateNamespaceProcedure.java:43)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:842)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:794)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$400(ProcedureExecutor.java:75)
>         at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$2.run(ProcedureExecutor.java:479)
> Found 1 deadlock.
> {code}
> I will try to dig more info about why this happened logs not showing much.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)