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.