diff --git a/CHANGES.txt b/CHANGES.txt index b1dcbe1a5e..d29feea1a6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -3,6 +3,7 @@ * Reduce contention getting instances of CompositeType (CASSANDRA-10433) * Improve digest calculation in the presence of overlapping tombstones (CASSANDRA-11349) + 2.1.15 * Account for partition deletions in tombstone histogram (CASSANDRA-12112) * Avoid stalling paxos when the paxos state expires (CASSANDRA-12043) diff --git a/src/java/org/apache/cassandra/db/marshal/CompositeType.java b/src/java/org/apache/cassandra/db/marshal/CompositeType.java index d25336d792..f8ac22deba 100644 --- a/src/java/org/apache/cassandra/db/marshal/CompositeType.java +++ b/src/java/org/apache/cassandra/db/marshal/CompositeType.java @@ -19,18 +19,18 @@ package org.apache.cassandra.db.marshal; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.ArrayList; import java.util.Arrays; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; +import java.util.Map; import com.google.common.collect.ImmutableList; -import org.apache.cassandra.cql3.ColumnIdentifier; -import org.apache.cassandra.cql3.Operator; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.SyntaxException; +import org.apache.cassandra.cql3.ColumnIdentifier; +import org.apache.cassandra.cql3.Operator; import org.apache.cassandra.io.util.DataOutputBuffer; import org.apache.cassandra.serializers.MarshalException; import org.apache.cassandra.utils.ByteBufferUtil; @@ -67,7 +67,7 @@ public class CompositeType extends AbstractCompositeType public final List> types; // interning instances - private static final ConcurrentMap>, CompositeType> instances = new ConcurrentHashMap>, CompositeType>(); + private static final Map>, CompositeType> instances = new HashMap>, CompositeType>(); public static CompositeType getInstance(TypeParser parser) throws ConfigurationException, SyntaxException { @@ -97,7 +97,7 @@ public class CompositeType extends AbstractCompositeType return true; } - public static CompositeType getInstance(List> types) + public static synchronized CompositeType getInstance(List> types) { assert types != null && !types.isEmpty(); @@ -105,11 +105,7 @@ public class CompositeType extends AbstractCompositeType if (ct == null) { ct = new CompositeType(types); - CompositeType previous = instances.putIfAbsent(types, ct); - if (previous != null) - { - ct = previous; - } + instances.put(types, ct); } return ct; }