[ https://issues.apache.org/jira/browse/HADOOP-7183?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13007180#comment-13007180 ]
Tom White commented on HADOOP-7183: ----------------------------------- Before HADOOP-6881 the only way to add a WritableComparator to the cache was by explicitly calling WritableComparator.define(). HADOOP-6881 changed WritableComparator.get() to add a generic WritableComparator to the comparators cache when there was none registered for the class. This patch simply restores the previous behaviour. Making WritableComparator thread-safe by using a thread-local buffer would be a good enhancement but isn't necessary for this fix. > WritableComparator.get should not cache comparator objects > ---------------------------------------------------------- > > Key: HADOOP-7183 > URL: https://issues.apache.org/jira/browse/HADOOP-7183 > Project: Hadoop Common > Issue Type: Bug > Affects Versions: 0.22.0 > Reporter: Todd Lipcon > Assignee: Tom White > Priority: Blocker > Fix For: 0.20.3, 0.21.1, 0.22.0 > > Attachments: HADOOP-7183.patch > > > HADOOP-6881 modified WritableComparator.get such that the constructed > WritableComparator gets saved back into the static map. This is fine for > stateless comparators, but some comparators have per-instance state, and thus > this becomes thread-unsafe and causes errors in the shuffle where multiple > threads are doing comparisons. An example of a Comparator with per-instance > state is WritableComparator itself. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira