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

Tsuyoshi OZAWA commented on HIVE-7409:
--------------------------------------

[~xuefuz] and [~navis], 
[JDK-7171421|https://bugs.openjdk.java.net/browse/JDK-7171421] is correct way 
which reproduce deadlock:

1. Thread 1: {{Class.getAnnotations}} or {{Class.getAnnotation}} -> 
{{initAnnotationsIfNecessary(synchronized)}} -> 
{{AnnotationType.getInstance(synchronized)}}
2. Thread 2: {{AnnotationType.getInstance(synchronized)}} -> 
{{Class.getAnnotation}} -> {{initAnnotationsIfNecessary(synchronized)}}

This is deadlock between {{Class.getAnnotations}} 
and{{AnnotationType.getInstance}}. JDK-side fix will be merged on future 
release - [JDK-8047613|https://bugs.openjdk.java.net/browse/JDK-8047613]. Do 
you have additional questions?

> Add workaround for a deadlock issue of Class.getAnnotation() 
> -------------------------------------------------------------
>
>                 Key: HIVE-7409
>                 URL: https://issues.apache.org/jira/browse/HIVE-7409
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Tsuyoshi OZAWA
>            Assignee: Tsuyoshi OZAWA
>         Attachments: HIVE-7409.1.patch, HIVE-7409.2.patch.txt, stacktrace.txt
>
>
> [JDK-7122142|https://bugs.openjdk.java.net/browse/JDK-7122142] mentions that 
> there is a race condition in getAnnotations. This problem can lead deadlock. 
> The fix on JDK will be merged on jdk8, but hive supports jdk6/jdk7 currently. 
> Therefore, we should add workaround to avoid the issue.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to