Repository: cassandra Updated Branches: refs/heads/trunk b04e4136f -> 95b43b195
Presize collections Patch by Dave Brosius; Reviewed by Jeff Jirsa for CASSANDRA-13760 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/95b43b19 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/95b43b19 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/95b43b19 Branch: refs/heads/trunk Commit: 95b43b195e4074533100f863344c182a118a8b6c Parents: b04e413 Author: Jeff Jirsa <[email protected]> Authored: Wed Aug 30 20:43:56 2017 -0700 Committer: Jeff Jirsa <[email protected]> Committed: Sat Dec 2 23:30:41 2017 -0800 ---------------------------------------------------------------------- src/java/org/apache/cassandra/auth/FunctionResource.java | 2 +- src/java/org/apache/cassandra/cql3/Relation.java | 2 +- .../apache/cassandra/cql3/statements/SelectStatement.java | 9 +++++---- .../apache/cassandra/db/AbstractReadCommandBuilder.java | 4 +++- .../apache/cassandra/db/ColumnFamilyStoreCQLHelper.java | 4 ++-- src/java/org/apache/cassandra/db/Directories.java | 6 ++++-- src/java/org/apache/cassandra/db/commitlog/CommitLog.java | 7 ++++--- .../db/compaction/AbstractCompactionStrategy.java | 4 ++-- .../apache/cassandra/db/compaction/CompactionManager.java | 2 +- .../db/compaction/CompactionStrategyManager.java | 10 ++++++---- .../db/compaction/DateTieredCompactionStrategy.java | 2 +- .../db/compaction/LeveledCompactionStrategy.java | 4 ++-- src/java/org/apache/cassandra/db/view/ViewManager.java | 7 +++++-- .../org/apache/cassandra/dht/ByteOrderedPartitioner.java | 6 ++++-- .../apache/cassandra/gms/GossipDigestSynVerbHandler.java | 4 +++- .../org/apache/cassandra/hadoop/cql3/CqlInputFormat.java | 9 +++++---- .../cassandra/index/sasi/disk/PerSSTableIndexWriter.java | 3 ++- .../apache/cassandra/index/sasi/plan/QueryController.java | 5 +++-- src/java/org/apache/cassandra/io/sstable/Descriptor.java | 2 +- src/java/org/apache/cassandra/io/sstable/SSTable.java | 2 +- src/java/org/apache/cassandra/repair/RepairJobDesc.java | 2 +- .../cassandra/repair/SystemDistributedKeyspace.java | 2 +- .../repair/consistent/PendingAntiCompaction.java | 5 +++-- src/java/org/apache/cassandra/schema/Indexes.java | 3 ++- src/java/org/apache/cassandra/schema/Types.java | 2 +- src/java/org/apache/cassandra/utils/concurrent/Ref.java | 2 +- 26 files changed, 65 insertions(+), 45 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/auth/FunctionResource.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/auth/FunctionResource.java b/src/java/org/apache/cassandra/auth/FunctionResource.java index f9f51d5..2c09c05 100644 --- a/src/java/org/apache/cassandra/auth/FunctionResource.java +++ b/src/java/org/apache/cassandra/auth/FunctionResource.java @@ -150,7 +150,7 @@ public class FunctionResource implements IResource if (keyspace == null) throw new InvalidRequestException("In this context function name must be " + "explictly qualified by a keyspace"); - List<AbstractType<?>> abstractTypes = new ArrayList<>(); + List<AbstractType<?>> abstractTypes = new ArrayList<>(argTypes.size()); for (CQL3Type.Raw cqlType : argTypes) abstractTypes.add(cqlType.prepare(keyspace).getType()); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/cql3/Relation.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/Relation.java b/src/java/org/apache/cassandra/cql3/Relation.java index 1d27874..0dcb3fa 100644 --- a/src/java/org/apache/cassandra/cql3/Relation.java +++ b/src/java/org/apache/cassandra/cql3/Relation.java @@ -243,7 +243,7 @@ public abstract class Relation if (raws == null) return null; - List<Term> terms = new ArrayList<>(); + List<Term> terms = new ArrayList<>(raws.size()); for (int i = 0, m = raws.size(); i < m; i++) terms.add(toTerm(receivers, raws.get(i), keyspace, boundNames)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java index 84fef5e..3754ee6 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java @@ -21,6 +21,7 @@ import java.nio.ByteBuffer; import java.util.*; import com.google.common.base.MoreObjects; +import com.google.common.collect.Maps; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1108,7 +1109,7 @@ public class SelectStatement implements CQLStatement * @param metadata the table metadata * @param selection the selection * @param restrictions the restrictions - * @param isDistinct <code>true</code> if the query is a DISTINCT one. + * @param isDistinct <code>true</code> if the query is a DISTINCT one. * @return the <code>AggregationSpecification</code>s used to make the aggregates */ private AggregationSpecification getAggregationSpecification(TableMetadata metadata, @@ -1170,8 +1171,8 @@ public class SelectStatement implements CQLStatement Map<ColumnIdentifier, Integer> orderingIndexes = getOrderingIndex(metadata, selection, orderingColumns); - List<Integer> idToSort = new ArrayList<Integer>(); - List<Comparator<ByteBuffer>> sorters = new ArrayList<Comparator<ByteBuffer>>(); + List<Integer> idToSort = new ArrayList<Integer>(orderingColumns.size()); + List<Comparator<ByteBuffer>> sorters = new ArrayList<Comparator<ByteBuffer>>(orderingColumns.size()); for (ColumnMetadata orderingColumn : orderingColumns.keySet()) { @@ -1186,7 +1187,7 @@ public class SelectStatement implements CQLStatement Selection selection, Map<ColumnMetadata, Boolean> orderingColumns) { - Map<ColumnIdentifier, Integer> orderingIndexes = new HashMap<>(); + Map<ColumnIdentifier, Integer> orderingIndexes = Maps.newHashMapWithExpectedSize(orderingColumns.size()); for (ColumnMetadata def : orderingColumns.keySet()) { int index = selection.getResultSetIndex(def); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java b/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java index 481e906..4df1bd3 100644 --- a/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java +++ b/src/java/org/apache/cassandra/db/AbstractReadCommandBuilder.java @@ -21,6 +21,8 @@ package org.apache.cassandra.db; import java.nio.ByteBuffer; import java.util.*; +import com.google.common.collect.Sets; + import org.apache.cassandra.schema.ColumnMetadata; import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.cql3.ColumnIdentifier; @@ -121,7 +123,7 @@ public abstract class AbstractReadCommandBuilder public AbstractReadCommandBuilder columns(String... columns) { if (this.columns == null) - this.columns = new HashSet<>(); + this.columns = Sets.newHashSetWithExpectedSize(columns.length); for (String column : columns) this.columns.add(ColumnIdentifier.getInterned(column, true)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java b/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java index d79fa0f..740ef3f 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStoreCQLHelper.java @@ -217,7 +217,7 @@ public class ColumnFamilyStoreCQLHelper resolveUserType((UserType) type, typeSet, types); } - List<String> typeStrings = new ArrayList<>(); + List<String> typeStrings = new ArrayList<>(types.size()); for (AbstractType type: types) typeStrings.add(toCQL((UserType) type)); return typeStrings; @@ -250,7 +250,7 @@ public class ColumnFamilyStoreCQLHelper @VisibleForTesting public static List<String> getIndexesAsCQL(TableMetadata metadata) { - List<String> indexes = new ArrayList<>(); + List<String> indexes = new ArrayList<>(metadata.indexes.size()); for (IndexMetadata indexMetadata: metadata.indexes) indexes.add(toCQL(metadata, indexMetadata)); return indexes; http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/Directories.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/Directories.java b/src/java/org/apache/cassandra/db/Directories.java index 88d909d..514f8fd 100644 --- a/src/java/org/apache/cassandra/db/Directories.java +++ b/src/java/org/apache/cassandra/db/Directories.java @@ -29,6 +29,7 @@ import java.util.function.BiPredicate; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; +import com.google.common.collect.Maps; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -778,8 +779,9 @@ public class Directories */ public Map<String, Pair<Long, Long>> getSnapshotDetails() { - final Map<String, Pair<Long, Long>> snapshotSpaceMap = new HashMap<>(); - for (File snapshot : listSnapshots()) + List<File> snapshots = listSnapshots(); + final Map<String, Pair<Long, Long>> snapshotSpaceMap = Maps.newHashMapWithExpectedSize(snapshots.size()); + for (File snapshot : snapshots) { final long sizeOnDisk = FileUtils.folderSize(snapshot); final long trueSize = getTrueAllocatedSizeIn(snapshot); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/commitlog/CommitLog.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLog.java b/src/java/org/apache/cassandra/db/commitlog/CommitLog.java index 3a7c792..68075ac 100644 --- a/src/java/org/apache/cassandra/db/commitlog/CommitLog.java +++ b/src/java/org/apache/cassandra/db/commitlog/CommitLog.java @@ -146,7 +146,7 @@ public class CommitLog implements CommitLogMBean // submit all files for this segment manager for archiving prior to recovery - CASSANDRA-6904 // The files may have already been archived by normal CommitLog operation. This may cause errors in this - // archiving pass, which we should not treat as serious. + // archiving pass, which we should not treat as serious. for (File file : new File(segmentManager.storageDirectory).listFiles(unmanagedFilesFilter)) { archiver.maybeArchive(file.getPath(), file.getName()); @@ -375,8 +375,9 @@ public class CommitLog implements CommitLogMBean public List<String> getActiveSegmentNames() { - List<String> segmentNames = new ArrayList<>(); - for (CommitLogSegment seg : segmentManager.getActiveSegments()) + Collection<CommitLogSegment> segments = segmentManager.getActiveSegments(); + List<String> segmentNames = new ArrayList<>(segments.size()); + for (CommitLogSegment seg : segments) segmentNames.add(seg.getName()); return segmentNames; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java index f1f42a7..0a07ce6 100644 --- a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java +++ b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java @@ -539,7 +539,7 @@ public abstract class AbstractCompactionStrategy Collections.sort(sortedSSTablesToGroup, SSTableReader.sstableComparator); Collection<Collection<SSTableReader>> groupedSSTables = new ArrayList<>(); - Collection<SSTableReader> currGroup = new ArrayList<>(); + Collection<SSTableReader> currGroup = new ArrayList<>(groupSize); for (SSTableReader sstable : sortedSSTablesToGroup) { @@ -547,7 +547,7 @@ public abstract class AbstractCompactionStrategy if (currGroup.size() == groupSize) { groupedSSTables.add(currGroup); - currGroup = new ArrayList<>(); + currGroup = new ArrayList<>(groupSize); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java index a615c03..9b1997f 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@ -809,7 +809,7 @@ public class CompactionManager implements CompactionManagerMBean descriptors.put(cfs, cfs.getDirectories().find(new File(filename.trim()).getName())); } - List<Future<?>> futures = new ArrayList<>(); + List<Future<?>> futures = new ArrayList<>(descriptors.size()); int nowInSec = FBUtilities.nowInSeconds(); for (ColumnFamilyStore cfs : descriptors.keySet()) futures.add(submitUserDefined(cfs, descriptors.get(cfs), getDefaultGcBefore(cfs, nowInSec))); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java index 1b3ddb5..0260bb8 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java @@ -725,11 +725,13 @@ public class CompactionStrategyManager implements INotificationConsumer { assert repaired.size() == unrepaired.size(); assert repaired.size() == pendingRepairs.size(); - List<Set<SSTableReader>> pendingSSTables = new ArrayList<>(); - List<Set<SSTableReader>> repairedSSTables = new ArrayList<>(); - List<Set<SSTableReader>> unrepairedSSTables = new ArrayList<>(); - for (int i = 0; i < repaired.size(); i++) + int numRepaired = repaired.size(); + List<Set<SSTableReader>> pendingSSTables = new ArrayList<>(numRepaired); + List<Set<SSTableReader>> repairedSSTables = new ArrayList<>(numRepaired); + List<Set<SSTableReader>> unrepairedSSTables = new ArrayList<>(numRepaired); + + for (int i = 0; i < numRepaired; i++) { pendingSSTables.add(new HashSet<>()); repairedSSTables.add(new HashSet<>()); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java index 49fa0b6..2c5b3e8 100644 --- a/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java +++ b/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java @@ -461,7 +461,7 @@ public class DateTieredCompactionStrategy extends AbstractCompactionStrategy @Override public Collection<Collection<SSTableReader>> groupSSTablesForAntiCompaction(Collection<SSTableReader> sstablesToGroup) { - Collection<Collection<SSTableReader>> groups = new ArrayList<>(); + Collection<Collection<SSTableReader>> groups = new ArrayList<>(sstablesToGroup.size()); for (SSTableReader sstable : sstablesToGroup) { groups.add(Collections.singleton(sstable)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java index 4285424..1c40a6a 100644 --- a/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java +++ b/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java @@ -235,14 +235,14 @@ public class LeveledCompactionStrategy extends AbstractCompactionStrategy for (Collection<SSTableReader> levelOfSSTables : sstablesByLevel.values()) { - Collection<SSTableReader> currGroup = new ArrayList<>(); + Collection<SSTableReader> currGroup = new ArrayList<>(groupSize); for (SSTableReader sstable : levelOfSSTables) { currGroup.add(sstable); if (currGroup.size() == groupSize) { groupedSSTables.add(currGroup); - currGroup = new ArrayList<>(); + currGroup = new ArrayList<>(groupSize); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/db/view/ViewManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/view/ViewManager.java b/src/java/org/apache/cassandra/db/view/ViewManager.java index 8506d82..8d12349 100644 --- a/src/java/org/apache/cassandra/db/view/ViewManager.java +++ b/src/java/org/apache/cassandra/db/view/ViewManager.java @@ -22,6 +22,7 @@ import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.locks.Lock; +import com.google.common.collect.Maps; import com.google.common.util.concurrent.Striped; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,6 +33,7 @@ import org.apache.cassandra.schema.ViewMetadata; import org.apache.cassandra.db.*; import org.apache.cassandra.db.partitions.*; import org.apache.cassandra.repair.SystemDistributedKeyspace; +import org.apache.cassandra.schema.Views; import org.apache.cassandra.service.StorageService; /** @@ -95,8 +97,9 @@ public class ViewManager public void reload(boolean buildAllViews) { - Map<String, ViewMetadata> newViewsByName = new HashMap<>(); - for (ViewMetadata definition : keyspace.getMetadata().views) + Views views = keyspace.getMetadata().views; + Map<String, ViewMetadata> newViewsByName = Maps.newHashMapWithExpectedSize(views.size()); + for (ViewMetadata definition : views) { newViewsByName.put(definition.name, definition); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java b/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java index ff7f2f7..08088f7 100644 --- a/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java +++ b/src/java/org/apache/cassandra/dht/ByteOrderedPartitioner.java @@ -43,6 +43,8 @@ import java.util.Map; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; +import com.google.common.collect.Maps; + public class ByteOrderedPartitioner implements IPartitioner { public static final BytesToken MINIMUM = new BytesToken(ArrayUtils.EMPTY_BYTE_ARRAY); @@ -219,7 +221,7 @@ public class ByteOrderedPartitioner implements IPartitioner return new BytesToken(buffer); } - private final Token.TokenFactory tokenFactory = new Token.TokenFactory() + private final Token.TokenFactory tokenFactory = new Token.TokenFactory() { public ByteBuffer toByteArray(Token token) { @@ -273,7 +275,7 @@ public class ByteOrderedPartitioner implements IPartitioner public Map<Token, Float> describeOwnership(List<Token> sortedTokens) { // allTokens will contain the count and be returned, sorted_ranges is shorthand for token<->token math. - Map<Token, Float> allTokens = new HashMap<Token, Float>(); + Map<Token, Float> allTokens = Maps.newHashMapWithExpectedSize(sortedTokens.size()); List<Range<Token>> sortedRanges = new ArrayList<Range<Token>>(sortedTokens.size()); // this initializes the counts to 0 and calcs the ranges in order. http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java b/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java index 6d0afa2..ddfafc9 100644 --- a/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java +++ b/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java @@ -20,6 +20,8 @@ package org.apache.cassandra.gms; import java.net.InetAddress; import java.util.*; +import com.google.common.collect.Maps; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -121,7 +123,7 @@ public class GossipDigestSynVerbHandler implements IVerbHandler<GossipDigestSyn> private void doSort(List<GossipDigest> gDigestList) { /* Construct a map of endpoint to GossipDigest. */ - Map<InetAddress, GossipDigest> epToDigestMap = new HashMap<InetAddress, GossipDigest>(); + Map<InetAddress, GossipDigest> epToDigestMap = Maps.newHashMapWithExpectedSize(gDigestList.size()); for (GossipDigest gDigest : gDigestList) { epToDigestMap.put(gDigest.getEndpoint(), gDigest); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java b/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java index 9259042..eae1fa2 100644 --- a/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java +++ b/src/java/org/apache/cassandra/hadoop/cql3/CqlInputFormat.java @@ -28,6 +28,7 @@ import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; import com.datastax.driver.core.TokenRange; +import com.google.common.collect.Maps; import org.apache.cassandra.schema.SchemaConstants; import org.apache.hadoop.conf.Configuration; @@ -50,7 +51,7 @@ import static java.util.stream.Collectors.toMap; /** * Hadoop InputFormat allowing map/reduce against Cassandra rows within one ColumnFamily. * - * At minimum, you need to set the KS and CF in your Hadoop job Configuration. + * At minimum, you need to set the KS and CF in your Hadoop job Configuration. * The ConfigHelper class is provided to make this * simple: * ConfigHelper.setInputColumnFamily @@ -62,10 +63,10 @@ import static java.util.stream.Collectors.toMap; * If no value is provided for InputSplitSizeInMb, we default to using InputSplitSize. * * CQLConfigHelper.setInputCQLPageRowSize. The default page row size is 1000. You - * should set it to "as big as possible, but no bigger." It set the LIMIT for the CQL + * should set it to "as big as possible, but no bigger." It set the LIMIT for the CQL * query, so you need set it big enough to minimize the network overhead, and also * not too big to avoid out of memory issue. - * + * * other native protocol connection parameters in CqlConfigHelper */ public class CqlInputFormat extends org.apache.hadoop.mapreduce.InputFormat<Long, Row> implements org.apache.hadoop.mapred.InputFormat<Long, Row> @@ -254,7 +255,7 @@ public class CqlInputFormat extends org.apache.hadoop.mapreduce.InputFormat<Long } List<TokenRange> splitRanges = tokenRange.splitEvenly(splitCount); - Map<TokenRange, Long> rangesWithLength = new HashMap<>(); + Map<TokenRange, Long> rangesWithLength = Maps.newHashMapWithExpectedSize(splitRanges.size()); for (TokenRange range : splitRanges) rangesWithLength.put(range, partitionCount/splitCount); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java b/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java index a63c9a2..b1ce521 100644 --- a/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java +++ b/src/java/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriter.java @@ -45,6 +45,7 @@ import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.utils.Pair; import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.Maps; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.Uninterruptibles; @@ -96,7 +97,7 @@ public class PerSSTableIndexWriter implements SSTableFlushObserver this.keyValidator = keyValidator; this.descriptor = descriptor; this.source = source; - this.indexes = new HashMap<>(); + this.indexes = Maps.newHashMapWithExpectedSize(supportedIndexes.size()); for (Map.Entry<ColumnMetadata, ColumnIndex> entry : supportedIndexes.entrySet()) indexes.put(entry.getKey(), newIndex(entry.getValue())); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java b/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java index c6aa7ee..db16c52 100644 --- a/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java +++ b/src/java/org/apache/cassandra/index/sasi/plan/QueryController.java @@ -136,9 +136,10 @@ public class QueryController ? RangeUnionIterator.<Long, Token>builder() : RangeIntersectionIterator.<Long, Token>builder(); - List<RangeIterator<Long, Token>> perIndexUnions = new ArrayList<>(); + Set<Map.Entry<Expression, Set<SSTableIndex>>> view = getView(op, expressions).entrySet(); + List<RangeIterator<Long, Token>> perIndexUnions = new ArrayList<>(view.size()); - for (Map.Entry<Expression, Set<SSTableIndex>> e : getView(op, expressions).entrySet()) + for (Map.Entry<Expression, Set<SSTableIndex>> e : view) { @SuppressWarnings("resource") // RangeIterators are closed by releaseIndexes RangeIterator<Long, Token> index = TermIterator.build(e.getKey(), e.getValue()); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/io/sstable/Descriptor.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/sstable/Descriptor.java b/src/java/org/apache/cassandra/io/sstable/Descriptor.java index 36943ff..3e4ba51 100644 --- a/src/java/org/apache/cassandra/io/sstable/Descriptor.java +++ b/src/java/org/apache/cassandra/io/sstable/Descriptor.java @@ -150,10 +150,10 @@ public class Descriptor /** Return any temporary files found in the directory */ public List<File> getTemporaryFiles() { - List<File> ret = new ArrayList<>(); File[] tmpFiles = directory.listFiles((dir, name) -> name.endsWith(Descriptor.TMP_EXT)); + List<File> ret = new ArrayList<>(tmpFiles.length); for (File tmpFile : tmpFiles) ret.add(tmpFile); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/io/sstable/SSTable.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/sstable/SSTable.java b/src/java/org/apache/cassandra/io/sstable/SSTable.java index f4d3706..40f8223 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTable.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTable.java @@ -170,7 +170,7 @@ public abstract class SSTable public List<String> getAllFilePaths() { - List<String> ret = new ArrayList<>(); + List<String> ret = new ArrayList<>(components.size()); for (Component component : components) ret.add(descriptor.filenameFor(component)); return ret; http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/repair/RepairJobDesc.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/repair/RepairJobDesc.java b/src/java/org/apache/cassandra/repair/RepairJobDesc.java index 8f70e00..7e7de07 100644 --- a/src/java/org/apache/cassandra/repair/RepairJobDesc.java +++ b/src/java/org/apache/cassandra/repair/RepairJobDesc.java @@ -122,7 +122,7 @@ public class RepairJobDesc String columnFamily = in.readUTF(); int nRanges = in.readInt(); - Collection<Range<Token>> ranges = new ArrayList<>(); + Collection<Range<Token>> ranges = new ArrayList<>(nRanges); Range<Token> range; for (int i = 0; i < nRanges; i++) http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java b/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java index 6ebd756..3770621 100644 --- a/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java +++ b/src/java/org/apache/cassandra/repair/SystemDistributedKeyspace.java @@ -304,7 +304,7 @@ public final class SystemDistributedKeyspace { try { - List<ByteBuffer> valueList = new ArrayList<>(); + List<ByteBuffer> valueList = new ArrayList<>(values.length); for (String v : values) { valueList.add(bytes(v)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java b/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java index 70251f6..dc3b45d 100644 --- a/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java +++ b/src/java/org/apache/cassandra/repair/consistent/PendingAntiCompaction.java @@ -186,8 +186,9 @@ public class PendingAntiCompaction public ListenableFuture run() { ActiveRepairService.ParentRepairSession prs = ActiveRepairService.instance.getParentRepairSession(prsId); - List<ListenableFutureTask<AcquireResult>> tasks = new ArrayList<>(); - for (ColumnFamilyStore cfs : prs.getColumnFamilyStores()) + Collection<ColumnFamilyStore> cfss = prs.getColumnFamilyStores(); + List<ListenableFutureTask<AcquireResult>> tasks = new ArrayList<>(cfss.size()); + for (ColumnFamilyStore cfs : cfss) { cfs.forceBlockingFlush(); ListenableFutureTask<AcquireResult> task = ListenableFutureTask.create(new AcquisitionCallable(cfs, ranges, prsId)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/schema/Indexes.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/schema/Indexes.java b/src/java/org/apache/cassandra/schema/Indexes.java index 81d400e..6122197 100644 --- a/src/java/org/apache/cassandra/schema/Indexes.java +++ b/src/java/org/apache/cassandra/schema/Indexes.java @@ -21,6 +21,7 @@ import java.util.*; import java.util.stream.Stream; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Sets; import org.apache.cassandra.exceptions.ConfigurationException; @@ -173,7 +174,7 @@ public final class Indexes implements Iterable<IndexMetadata> * The reason for this is that schema altering statements are not calling * Keyspaces.validate() as of yet. TODO: remove this once they do (on CASSANDRA-9425 completion) */ - Set<String> indexNames = new HashSet<>(); + Set<String> indexNames = Sets.newHashSetWithExpectedSize(indexesByName.size()); for (IndexMetadata index : indexesByName.values()) { if (indexNames.contains(index.name)) http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/schema/Types.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/schema/Types.java b/src/java/org/apache/cassandra/schema/Types.java index c2d8aac..0bdf7cf 100644 --- a/src/java/org/apache/cassandra/schema/Types.java +++ b/src/java/org/apache/cassandra/schema/Types.java @@ -231,7 +231,7 @@ public final class Types implements Iterable<UserType> /* * build a DAG of UDT dependencies */ - Map<RawUDT, Integer> vertices = new HashMap<>(); // map values are numbers of referenced types + Map<RawUDT, Integer> vertices = Maps.newHashMapWithExpectedSize(definitions.size()); // map values are numbers of referenced types for (RawUDT udt : definitions) vertices.put(udt, 0); http://git-wip-us.apache.org/repos/asf/cassandra/blob/95b43b19/src/java/org/apache/cassandra/utils/concurrent/Ref.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/concurrent/Ref.java b/src/java/org/apache/cassandra/utils/concurrent/Ref.java index 3383186..b69e6bf 100644 --- a/src/java/org/apache/cassandra/utils/concurrent/Ref.java +++ b/src/java/org/apache/cassandra/utils/concurrent/Ref.java @@ -697,7 +697,7 @@ public final class Ref<T> implements RefCounted<T> this.candidates.retainAll(candidates); if (!this.candidates.isEmpty()) { - List<String> names = new ArrayList<>(); + List<String> names = new ArrayList<>(this.candidates.size()); for (Tidy tidy : this.candidates) names.add(tidy.name()); logger.warn("Strong reference leak candidates detected: {}", names); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
