From ba068472b33dc4e68aeb05deb480811b37582a46 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Thu, 21 Jul 2016 10:17:31 -0500 Subject: [PATCH] Revert "Reduce contention getting instances of CompositeType" This reverts commit fda3d8ee25adc4837bb5754f718062e522c04788. (See thread at https://mail-archives.apache.org/mod_mbox/cassandra-dev/201607.mbox/%3CCALdd-zjg%2Ba73VncPkU2rw_UpFPVsw0yNwO-yBqUQfK8H8FpiKw%40mail.gmail.com%3E) --- CHANGES.txt | 1 + .../cassandra/db/marshal/CompositeType.java | 20 ++++++++----------- 2 files changed, 9 insertions(+), 12 deletions(-) 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; }