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

Cody Marcel commented on PHOENIX-1994:
--------------------------------------

[~samarthjain] and I spent a bit of time debugging this yesterday. We narrowed 
it down the test in the description, which mocks out the call inside 
ParallelWriterIndexCommittter.write() method. Specifically line 169 
"table.batch()".

In the test line 173 mocks out the list of mutations. It looks like the 
deadlock happens because the first mutation waits on a countdown latch, that is 
triggered by an intentional exception throwing in the second mutation. 

> TestIndexWriter#testFailureOnRunningUpdateAbortsPending() deadlocks on JDK 8
> ----------------------------------------------------------------------------
>
>                 Key: PHOENIX-1994
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1994
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.5.0
>         Environment: jdk1.8.0_40_x64
>            Reporter: Cody Marcel
>
> Unit test hang on JDKK 8.
> TestIndexWriter#testFailureOnRunningUpdateAbortsPending()
> Jstack:
> "Attach Listener" #40 daemon prio=9 os_prio=0 tid=0x00007f24c0001000 
> nid=0x2e0a waiting on condition [0x0000000000000000]
>    java.lang.Thread.State: RUNNABLE
> "pool-21-thread-1" #39 prio=5 os_prio=0 tid=0x00007f25113b7000 nid=0x2d3b 
> waiting on condition [0x00007f24dc8c0000]
>    java.lang.Thread.State: WAITING (parking)
>       at sun.misc.Unsafe.park(Native Method)
>       - parking to wait for  <0x000000079860ea08> (a 
> java.util.concurrent.CountDownLatch$Sync)
>       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
>       at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>       at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
>       at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
>       at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
>       at 
> org.apache.phoenix.hbase.index.write.TestIndexWriter$3.answer(TestIndexWriter.java:176)
>       at 
> org.apache.phoenix.hbase.index.write.TestIndexWriter$3.answer(TestIndexWriter.java:173)
>       at 
> org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:31)
>       - locked <0x0000000798618370> (a 
> java.util.concurrent.ConcurrentLinkedQueue)
>       at org.mockito.internal.MockHandler.handle(MockHandler.java:97)
>       at 
> org.mockito.internal.creation.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:47)
>       at 
> org.apache.hadoop.hbase.client.HTableInterface$$EnhancerByMockitoWithCGLIB$$309bbe3a.batch(<generated>)
>       at 
> org.apache.phoenix.hbase.index.write.ParallelWriterIndexCommitter$1.call(ParallelWriterIndexCommitter.java:169)
>       at 
> org.apache.phoenix.hbase.index.write.ParallelWriterIndexCommitter$1.call(ParallelWriterIndexCommitter.java:128)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>       at java.lang.Thread.run(Thread.java:745)
> "Timer for 'phoenix' metrics system" #12 daemon prio=5 os_prio=0 
> tid=0x00007f2510e79800 nid=0x2d1c in Object.wait() [0x00007f24dd80c000]
>    java.lang.Thread.State: TIMED_WAITING (on object monitor)
>       at java.lang.Object.wait(Native Method)
>       at java.util.TimerThread.mainLoop(Timer.java:552)
>       - locked <0x0000000733626998> (a java.util.TaskQueue)
>       at java.util.TimerThread.run(Timer.java:505)



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

Reply via email to