[ https://issues.apache.org/jira/browse/HADOOP-8684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Allen Wittenauer updated HADOOP-8684: ------------------------------------- Fix Version/s: (was: 3.0.0) > Deadlock between WritableComparator and WritableComparable > ---------------------------------------------------------- > > Key: HADOOP-8684 > URL: https://issues.apache.org/jira/browse/HADOOP-8684 > Project: Hadoop Common > Issue Type: Bug > Components: io > Affects Versions: 1.0.3, 3.0.0 > Reporter: Hiroshi Ikeda > Assignee: Jing Zhao > Priority: Minor > Fix For: 0.23.4, 2.0.3-alpha > > Attachments: Hadoop-8684.patch, Hadoop-8684.patch, Hadoop-8684.patch, > Hadoop-8684.patch, Hadoop-8684.patch, WritableComparatorDeadLockTestApp.java > > > Classes implementing WriableComparable in Hadoop call the method > WritableComparator.define() in their static initializers. This means, the > classes call the method define() while thier class loading, under locking > their class objects. And, the method WritableComparator.define() locks the > WritableComaprator class object. > On the other hand, WritableComparator.get() also locks the WritableComparator > class object, and the method may create instances of the targeted comparable > class, involving loading the targeted comparable class if any. This means, > the method might try to lock the targeted comparable class object under > locking the WritableComparator class object. > There are reversed orders of locking objects, and you might fall in deadlock. -- This message was sent by Atlassian JIRA (v6.3.4#6332)