Author: tomwhite
Date: Mon Jan 18 10:52:47 2016
New Revision: 1725220

URL: http://svn.apache.org/viewvc?rev=1725220&view=rev
Log:
AVRO-1760. Java: Thread scalability problem with the use of SynchronizedMap

Modified:
    avro/trunk/CHANGES.txt
    
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java

Modified: avro/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1725220&r1=1725219&r2=1725220&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Mon Jan 18 10:52:47 2016
@@ -77,6 +77,9 @@ Avro 1.8.0 (15 December 2015)
 
   OPTIMIZATIONS
 
+    AVRO-1760. Java: Thread scalability problem with the use of SynchronizedMap
+    (tomwhite)
+
   IMPROVEMENTS
 
     AVRO-843. C#: Change Visual Studio project files to specify .NET 3.5.

Modified: 
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
URL: 
http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java?rev=1725220&r1=1725219&r2=1725220&view=diff
==============================================================================
--- 
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
 (original)
+++ 
avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
 Mon Jan 18 10:52:47 2016
@@ -24,11 +24,9 @@ import java.nio.charset.StandardCharsets
 import java.util.AbstractList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.IdentityHashMap;
 import java.util.LinkedHashMap;
-import java.util.WeakHashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -53,6 +51,8 @@ import org.apache.avro.util.Utf8;
 
 import org.codehaus.jackson.JsonNode;
 
+import com.google.common.collect.MapMaker;
+
 /** Utilities for generic Java data. See {@link GenericRecordBuilder} for a 
convenient
  * way to build {@link GenericRecord} instances.
  * @see GenericRecordBuilder
@@ -969,7 +969,7 @@ public class GenericData {
   }
 
   private final Map<Field, Object> defaultValueCache
-    = Collections.synchronizedMap(new WeakHashMap<Field, Object>());
+    = new MapMaker().weakKeys().makeMap();
 
   /**
    * Gets the default value of the given field, if any.


Reply via email to