You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by su...@apache.org on 2012/08/31 19:01:25 UTC
svn commit: r1379506 - in
/hadoop/common/trunk/hadoop-common-project/hadoop-common: CHANGES.txt
src/main/java/org/apache/hadoop/io/WritableComparator.java
Author: suresh
Date: Fri Aug 31 17:01:25 2012
New Revision: 1379506
URL: http://svn.apache.org/viewvc?rev=1379506&view=rev
Log:
HADOOP-8684. Deadlock between WritableComparator and WritableComparable. Contributed by Jing Zhao
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/WritableComparator.java
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1379506&r1=1379505&r2=1379506&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Fri Aug 31 17:01:25 2012
@@ -197,6 +197,9 @@ Trunk (unreleased changes)
HADOOP-8623. hadoop jar command should respect HADOOP_OPTS.
(Steven Willis via suresh)
+ HADOOP-8684. Deadlock between WritableComparator and WritableComparable.
+ (Jing Zhao via suresh)
+
OPTIMIZATIONS
HADOOP-7761. Improve the performance of raw comparisons. (todd)
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/WritableComparator.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/WritableComparator.java?rev=1379506&r1=1379505&r2=1379506&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/WritableComparator.java (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/WritableComparator.java Fri Aug 31 17:01:25 2012
@@ -18,8 +18,9 @@
package org.apache.hadoop.io;
-import java.io.*;
-import java.util.*;
+import java.io.DataInput;
+import java.io.IOException;
+import java.util.concurrent.ConcurrentHashMap;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
@@ -38,12 +39,11 @@ import org.apache.hadoop.util.Reflection
@InterfaceStability.Stable
public class WritableComparator implements RawComparator {
- private static HashMap<Class, WritableComparator> comparators =
- new HashMap<Class, WritableComparator>(); // registry
+ private static final ConcurrentHashMap<Class, WritableComparator> comparators
+ = new ConcurrentHashMap<Class, WritableComparator>(); // registry
/** Get a comparator for a {@link WritableComparable} implementation. */
- public static synchronized
- WritableComparator get(Class<? extends WritableComparable> c) {
+ public static WritableComparator get(Class<? extends WritableComparable> c) {
WritableComparator comparator = comparators.get(c);
if (comparator == null) {
// force the static initializers to run
@@ -76,12 +76,10 @@ public class WritableComparator implemen
/** Register an optimized comparator for a {@link WritableComparable}
* implementation. Comparators registered with this method must be
* thread-safe. */
- public static synchronized void define(Class c,
- WritableComparator comparator) {
+ public static void define(Class c, WritableComparator comparator) {
comparators.put(c, comparator);
}
-
private final Class<? extends WritableComparable> keyClass;
private final WritableComparable key1;
private final WritableComparable key2;