This is an automated email from the ASF dual-hosted git repository.
dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/main by this push:
new ff205009d7 Provide a better initial size for collections if possible
(#6464)
ff205009d7 is described below
commit ff205009d78759cbc1bc7cdbed2c3c49cd450c9c
Author: Dave Marion <[email protected]>
AuthorDate: Thu Jul 9 08:00:16 2026 -0400
Provide a better initial size for collections if possible (#6464)
---
.../core/clientImpl/ActiveCompactionImpl.java | 2 +-
.../core/clientImpl/ClientTabletCache.java | 2 +-
.../core/clientImpl/ClientTabletCacheImpl.java | 6 ++-
.../core/clientImpl/ConditionalWriterImpl.java | 21 +++++-----
.../core/clientImpl/InstanceOperationsImpl.java | 47 +++++++++++++---------
.../accumulo/core/clientImpl/OfflineIterator.java | 1 +
.../core/clientImpl/RootClientTabletCache.java | 3 +-
.../core/clientImpl/SyncingClientTabletCache.java | 3 +-
.../core/clientImpl/TableOperationsImpl.java | 6 +--
.../clientImpl/TabletInformationCollector.java | 2 +-
.../TabletServerBatchReaderIterator.java | 12 +++---
.../core/clientImpl/ThriftTransportPool.java | 6 +--
.../core/clientImpl/TimeoutClientTabletCache.java | 3 +-
.../apache/accumulo/core/clientImpl/bulk/Bulk.java | 7 +++-
.../accumulo/core/clientImpl/bulk/BulkImport.java | 8 ++--
.../accumulo/core/lock/ServiceLockPaths.java | 2 +-
.../core/manager/balancer/BalanceParamsImpl.java | 2 +-
.../compaction/RatioBasedCompactionPlanner.java | 2 +-
.../core/spi/scan/ScanServersSnapshot.java | 2 +-
.../util/compaction/ExternalCompactionUtil.java | 5 ++-
.../core/clientImpl/ClientTabletCacheImplTest.java | 4 +-
.../org/apache/accumulo/server/fs/FileManager.java | 2 +-
.../accumulo/server/manager/LiveTServerSet.java | 7 ++--
.../metadata/ConditionalTabletsMutatorImpl.java | 11 ++---
.../server/security/AuditedSecurityOperation.java | 3 +-
.../apache/accumulo/server/split/SplitUtils.java | 2 +-
.../java/org/apache/accumulo/manager/Manager.java | 2 +-
.../manager/ManagerClientServiceHandler.java | 2 +-
.../manager/tableOps/bulkVer2/BulkImportMove.java | 2 +-
.../manager/tableOps/bulkVer2/LoadFiles.java | 12 +++---
.../manager/tableOps/bulkVer2/TabletRefresher.java | 3 +-
.../java/org/apache/accumulo/tserver/RowLocks.java | 1 +
.../org/apache/accumulo/tserver/ScanServer.java | 11 ++---
.../accumulo/tserver/TabletClientHandler.java | 9 +++--
.../org/apache/accumulo/tserver/log/DfsLogger.java | 3 +-
35 files changed, 124 insertions(+), 92 deletions(-)
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ActiveCompactionImpl.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ActiveCompactionImpl.java
index 08a1c5f401..56b66cc2a6 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ActiveCompactionImpl.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ActiveCompactionImpl.java
@@ -104,7 +104,7 @@ public class ActiveCompactionImpl extends ActiveCompaction {
@Override
public List<IteratorSetting> getIterators() {
- ArrayList<IteratorSetting> ret = new ArrayList<>();
+ ArrayList<IteratorSetting> ret = new ArrayList<>(tac.getSsiListSize());
for (IterInfo ii : tac.getSsiList()) {
IteratorSetting settings =
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCache.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCache.java
index 37cd293615..f671dcb27c 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCache.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCache.java
@@ -116,7 +116,7 @@ public abstract class ClientTabletCache {
}
public abstract <T extends Mutation> void binMutations(ClientContext
context, List<T> mutations,
- Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures)
+ Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T>
failures)
throws AccumuloException, AccumuloSecurityException,
TableNotFoundException,
InvalidTabletHostingRequestException;
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImpl.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImpl.java
index 814c4b856f..ed95bc366d 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImpl.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImpl.java
@@ -219,7 +219,7 @@ public class ClientTabletCacheImpl extends
ClientTabletCache {
@Override
public <T extends Mutation> void binMutations(ClientContext context, List<T>
mutations,
- Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures)
+ Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T>
failures)
throws AccumuloException, AccumuloSecurityException,
TableNotFoundException,
InvalidTabletHostingRequestException {
@@ -257,6 +257,8 @@ public class ClientTabletCacheImpl extends
ClientTabletCache {
notInCache.sort((o1, o2) -> WritableComparator.compareBytes(o1.getRow(),
0,
o1.getRow().length, o2.getRow(), 0, o2.getRow().length));
+ failures.ensureCapacity(failures.size() + notInCache.size());
+
// Want to ignore any entries in the cache w/o a location that were
created before the
// following time. Entries created after the following time may have
been populated by the
// following loop, and we want to use those.
@@ -635,7 +637,7 @@ public class ClientTabletCacheImpl extends
ClientTabletCache {
return;
}
- List<TKeyExtent> extentsToBringOnline = new ArrayList<>();
+ List<TKeyExtent> extentsToBringOnline = new
ArrayList<>(tabletsWithNoLocation.size());
for (var cachedTablet : tabletsWithNoLocation) {
if (cachedTablet.getCreationTimer().elapsed().compareTo(STALE_DURATION)
< 0) {
if (cachedTablet.getAvailability() == TabletAvailability.ONDEMAND) {
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
index d5417c4fbc..2335196cc6 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ConditionalWriterImpl.java
@@ -286,7 +286,7 @@ public class ConditionalWriterImpl implements
ConditionalWriter {
}
private void queue(List<QCMutation> mutations) {
- List<QCMutation> failures = new ArrayList<>();
+ ArrayList<QCMutation> failures = new ArrayList<>();
Map<String,TabletServerMutations<QCMutation>> binnedMutations = new
HashMap<>();
try {
@@ -349,7 +349,7 @@ public class ConditionalWriterImpl implements
ConditionalWriter {
private TabletServerMutations<QCMutation> dequeue(String location) {
var queue = getServerQueue(location).queue;
- var mutations = new ArrayList<TabletServerMutations<QCMutation>>();
+ var mutations = new
ArrayList<TabletServerMutations<QCMutation>>(queue.size());
queue.drainTo(mutations);
if (mutations.isEmpty()) {
@@ -363,8 +363,10 @@ public class ConditionalWriterImpl implements
ConditionalWriter {
TabletServerMutations<QCMutation> tsm = mutations.get(0);
for (int i = 1; i < mutations.size(); i++) {
- mutations.get(i).getMutations().forEach((keyExtent, mutationList) ->
tsm.getMutations()
- .computeIfAbsent(keyExtent, k -> new
ArrayList<>()).addAll(mutationList));
+ mutations.get(i).getMutations()
+ .forEach((keyExtent, mutationList) -> tsm.getMutations()
+ .computeIfAbsent(keyExtent, k -> new
ArrayList<>(mutationList.size()))
+ .addAll(mutationList));
}
return tsm;
@@ -388,7 +390,7 @@ public class ConditionalWriterImpl implements
ConditionalWriter {
this.classLoaderContext = config.getClassLoaderContext();
Runnable failureHandler = () -> {
- List<QCMutation> mutations = new ArrayList<>();
+ List<QCMutation> mutations = new ArrayList<>(failedMutations.size());
failedMutations.drainTo(mutations);
if (!mutations.isEmpty()) {
queue(mutations);
@@ -545,7 +547,7 @@ public class ConditionalWriterImpl implements
ConditionalWriter {
}
List<SessionID> getActiveSessions() {
- ArrayList<SessionID> activeSessions = new ArrayList<>();
+ ArrayList<SessionID> activeSessions = new
ArrayList<>(cachedSessionIDs.values().size() / 2);
for (SessionID sid : cachedSessionIDs.values()) {
if (sid.isActive()) {
activeSessions.add(sid);
@@ -638,8 +640,9 @@ public class ConditionalWriterImpl implements
ConditionalWriter {
}
private void queueRetry(Map<Long,CMK> cmidToCm, HostAndPort location) {
- ArrayList<QCMutation> ignored = new ArrayList<>();
- for (CMK cmk : cmidToCm.values()) {
+ var values = cmidToCm.values();
+ ArrayList<QCMutation> ignored = new ArrayList<>(values.size());
+ for (CMK cmk : values) {
ignored.add(cmk.cm);
}
queueRetry(ignored, location);
@@ -742,7 +745,7 @@ public class ConditionalWriterImpl implements
ConditionalWriter {
CompressedIterators compressedIters) {
mutations.getMutations().forEach((keyExtent, mutationList) -> {
- var tcondMutaions = new ArrayList<TConditionalMutation>();
+ var tcondMutaions = new
ArrayList<TConditionalMutation>(mutationList.size());
for (var cm : mutationList) {
var id = cmid.longValue();
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
index ec5af824aa..85d660ca28 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
@@ -240,28 +240,30 @@ public class InstanceOperationsImpl implements
InstanceOperations {
@Override
@Deprecated(since = "4.0.0")
public Set<String> getCompactors() {
- Set<String> results = new HashSet<>();
- context.getServerPaths().getCompactor(ResourceGroupPredicate.ANY,
AddressSelector.all(), true)
- .forEach(t -> results.add(t.getServer()));
+ var compactors =
context.getServerPaths().getCompactor(ResourceGroupPredicate.ANY,
+ AddressSelector.all(), true);
+ Set<String> results = new HashSet<>(compactors.size(), 1.0f);
+ compactors.forEach(t -> results.add(t.getServer()));
return results;
}
@Override
@Deprecated(since = "4.0.0")
public Set<String> getScanServers() {
- Set<String> results = new HashSet<>();
- context.getServerPaths().getScanServer(ResourceGroupPredicate.ANY,
AddressSelector.all(), true)
- .forEach(t -> results.add(t.getServer()));
+ var sservers =
context.getServerPaths().getScanServer(ResourceGroupPredicate.ANY,
+ AddressSelector.all(), true);
+ Set<String> results = new HashSet<>(sservers.size(), 1.f);
+ sservers.forEach(t -> results.add(t.getServer()));
return results;
}
@Override
@Deprecated(since = "4.0.0")
public List<String> getTabletServers() {
- List<String> results = new ArrayList<>();
- context.getServerPaths()
- .getTabletServer(ResourceGroupPredicate.ANY, AddressSelector.all(),
true)
- .forEach(t -> results.add(t.getServer()));
+ var tserverLocks =
context.getServerPaths().getTabletServer(ResourceGroupPredicate.ANY,
+ AddressSelector.all(), true);
+ List<String> results = new ArrayList<>(tserverLocks.size());
+ tserverLocks.forEach(t -> results.add(t.getServer()));
return results;
}
@@ -556,18 +558,22 @@ public class InstanceOperationsImpl implements
InstanceOperations {
private Set<ServerId> getServers(ServerId.Type type,
Predicate<ResourceGroupId> resourceGroupPredicate, AddressSelector
addressSelector) {
- final Set<ServerId> results = new HashSet<>();
+ final Set<ServerId> results;
switch (type) {
case COMPACTOR:
- context.getServerPaths().getCompactor(resourceGroupPredicate::test,
addressSelector, true)
- .forEach(c -> results.add(createServerId(type, c)));
+ var compactors =
context.getServerPaths().getCompactor(resourceGroupPredicate::test,
+ addressSelector, true);
+ results = new HashSet<>(compactors.size(), 1.0f);
+ compactors.forEach(c -> results.add(createServerId(type, c)));
break;
case MANAGER:
+ results = new HashSet<>();
context.getServerPaths().getAssistantManagers(addressSelector, true)
.forEach(s -> results.add(createServerId(type, s)));
break;
case MONITOR:
+ results = new HashSet<>();
ServiceLockPath mon = context.getServerPaths().getMonitor(true);
if (mon != null) {
Optional<ServiceLockData> sld =
context.getZooCache().getLockData(mon);
@@ -582,6 +588,7 @@ public class InstanceOperationsImpl implements
InstanceOperations {
}
break;
case GARBAGE_COLLECTOR:
+ results = new HashSet<>();
ServiceLockPath gc =
context.getServerPaths().getGarbageCollector(true);
if (gc != null) {
Optional<ServiceLockData> sld =
context.getZooCache().getLockData(gc);
@@ -596,15 +603,19 @@ public class InstanceOperationsImpl implements
InstanceOperations {
}
break;
case SCAN_SERVER:
- context.getServerPaths().getScanServer(resourceGroupPredicate::test,
addressSelector, true)
- .forEach(s -> results.add(createServerId(type, s)));
+ var sservers =
context.getServerPaths().getScanServer(resourceGroupPredicate::test,
+ addressSelector, true);
+ results = new HashSet<>(sservers.size(), 1.0f);
+ sservers.forEach(s -> results.add(createServerId(type, s)));
break;
case TABLET_SERVER:
- context.getServerPaths()
- .getTabletServer(resourceGroupPredicate::test, addressSelector,
true)
- .forEach(t -> results.add(createServerId(type, t)));
+ var tservers =
context.getServerPaths().getTabletServer(resourceGroupPredicate::test,
+ addressSelector, true);
+ results = new HashSet<>(tservers.size(), 1.0f);
+ tservers.forEach(t -> results.add(createServerId(type, t)));
break;
default:
+ results = new HashSet<>();
break;
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
index 8a6e019d75..3750098ed9 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/OfflineIterator.java
@@ -233,6 +233,7 @@ final class OfflineIterator implements
Iterator<Entry<Key,Value>> {
if (scannerSamplerConfigImpl != null &&
!scannerSamplerConfigImpl.equals(samplerConfImpl)) {
throw new SampleNotPresentException();
}
+ readers.ensureCapacity(absFiles.size());
for (StoredTabletFile file : absFiles) {
var cs = CryptoFactoryLoader.getServiceForClientWithTable(systemConf,
tableConf, tableId);
FileSystem fs =
VolumeConfiguration.fileSystemForPath(file.getNormalizedPathStr(), conf);
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/RootClientTabletCache.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/RootClientTabletCache.java
index f2197870aa..47fccc4c67 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/RootClientTabletCache.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/RootClientTabletCache.java
@@ -22,6 +22,7 @@ import static
com.google.common.util.concurrent.Uninterruptibles.sleepUninterrup
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -67,7 +68,7 @@ public class RootClientTabletCache extends ClientTabletCache {
@Override
public <T extends Mutation> void binMutations(ClientContext context, List<T>
mutations,
- Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures) {
+ Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T>
failures) {
CachedTablet rootCachedTablet = getRootTabletLocation(context);
if (rootCachedTablet != null &&
rootCachedTablet.getTserverLocation().isPresent()) {
var tsm = new
TabletServerMutations<T>(rootCachedTablet.getTserverSession().orElseThrow());
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/SyncingClientTabletCache.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/SyncingClientTabletCache.java
index ffc2c0c548..8c11ad2851 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/SyncingClientTabletCache.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/SyncingClientTabletCache.java
@@ -18,6 +18,7 @@
*/
package org.apache.accumulo.core.clientImpl;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -76,7 +77,7 @@ public class SyncingClientTabletCache extends
ClientTabletCache {
@Override
public <T extends Mutation> void binMutations(ClientContext context, List<T>
mutations,
- Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures)
+ Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T>
failures)
throws AccumuloException, AccumuloSecurityException,
TableNotFoundException,
InvalidTabletHostingRequestException {
syncLocator().binMutations(context, mutations, binnedMutations, failures);
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
index d9f3659eef..67ff4e8d94 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
@@ -509,7 +509,7 @@ public class TableOperationsImpl extends
TableOperationsHelper {
Map<KeyExtent,List<SplitMergeability>> tabletSplits =
splitsToTablets.newSplits;
Map<KeyExtent,TabletMergeability> existingSplits =
splitsToTablets.existingSplits;
- List<CompletableFuture<Void>> futures = new ArrayList<>();
+ List<CompletableFuture<Void>> futures = new
ArrayList<>(existingSplits.size());
// Handle existing updates
if (!existingSplits.isEmpty()) {
@@ -881,7 +881,7 @@ public class TableOperationsImpl extends
TableOperationsHelper {
@Override
public void compact(String tableName, Text start, Text end, boolean flush,
boolean wait)
throws AccumuloSecurityException, TableNotFoundException,
AccumuloException {
- compact(tableName, start, end, new ArrayList<>(), flush, wait);
+ compact(tableName, start, end, List.of(), flush, wait);
}
@Override
@@ -1616,7 +1616,7 @@ public class TableOperationsImpl extends
TableOperationsHelper {
}
}
- List<DiskUsage> finalUsages = new ArrayList<>();
+ List<DiskUsage> finalUsages = new ArrayList<>(diskUsages.size());
for (TDiskUsage diskUsage : diskUsages) {
finalUsages.add(new DiskUsage(new TreeSet<>(diskUsage.getTables()),
diskUsage.getUsage()));
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletInformationCollector.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletInformationCollector.java
index 5e29b52c6b..9624322655 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletInformationCollector.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletInformationCollector.java
@@ -77,7 +77,7 @@ public class TabletInformationCollector {
}
});
- List<Stream<TabletInformation>> tabletStreams = new ArrayList<>();
+ List<Stream<TabletInformation>> tabletStreams = new
ArrayList<>(mergedRanges.size());
for (RowRange rowRange : mergedRanges) {
Text startRow = rowRange.getLowerBound();
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
index a580347125..2643546372 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
@@ -323,9 +323,9 @@ public final class TabletServerBatchReaderIterator
implements Iterator<Entry<Key
// truncate the ranges to within the tablets... this makes it easier to
know what work
// needs to be redone when failures occurs and tablets have merged or split
- Map<String,Map<KeyExtent,List<Range>>> binnedRanges2 = new HashMap<>();
+ Map<String,Map<KeyExtent,List<Range>>> binnedRanges2 = new
HashMap<>(binnedRanges.size(), 1.0f);
for (Entry<String,Map<KeyExtent,List<Range>>> entry :
binnedRanges.entrySet()) {
- Map<KeyExtent,List<Range>> tabletMap = new HashMap<>();
+ Map<KeyExtent,List<Range>> tabletMap = new
HashMap<>(entry.getValue().size(), 1.0f);
binnedRanges2.put(entry.getKey(), tabletMap);
for (Entry<KeyExtent,List<Range>> tabletRanges :
entry.getValue().entrySet()) {
Range tabletRange = tabletRanges.getKey().toDataRange();
@@ -663,10 +663,10 @@ public final class TabletServerBatchReaderIterator
implements Iterator<Entry<Key
AccumuloSecurityException, InvalidTabletHostingRequestException {
ScanServerSelector ecsm = context.getScanServerSelector();
- Map<KeyExtent,String> extentToTserverMap = new HashMap<>();
- Map<KeyExtent,List<Range>> extentToRangesMap = new HashMap<>();
+ Map<KeyExtent,String> extentToTserverMap = new HashMap<>(ranges.size());
+ Map<KeyExtent,List<Range>> extentToRangesMap = new
HashMap<>(ranges.size());
- Set<TabletIdImpl> tabletIds = new HashSet<>();
+ Set<TabletIdImpl> tabletIds = new HashSet<>(ranges.size());
List<Range> failures = clientTabletCache.findTablets(context, ranges,
(cachedTablet, range) -> {
if (cachedTablet.getTserverLocation().isPresent()) {
@@ -712,7 +712,7 @@ public final class TabletServerBatchReaderIterator
implements Iterator<Entry<Key
var actions = ecsm.selectServers(params);
- Map<String,BatchAttemptReporter> reporters = new HashMap<>();
+ Map<String,BatchAttemptReporter> reporters = new
HashMap<>(tabletIds.size());
failures = new ArrayList<>();
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
index 0841fbc2ea..8d17442298 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ThriftTransportPool.java
@@ -144,9 +144,9 @@ public class ThriftTransportPool {
public Pair<String,TTransport> getAnyCachedTransport(ThriftClientTypes<?>
type) {
- final List<ThriftTransportKey> serversSet = new ArrayList<>();
-
- for (ThriftTransportKey ttk : connectionPool.getThriftTransportKeys()) {
+ var keys = connectionPool.getThriftTransportKeys();
+ final List<ThriftTransportKey> serversSet = new ArrayList<>(keys.size());
+ for (ThriftTransportKey ttk : keys) {
if (ttk.getType().equals(type)) {
serversSet.add(ttk);
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TimeoutClientTabletCache.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TimeoutClientTabletCache.java
index 77c93de7d4..498849c0a9 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TimeoutClientTabletCache.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TimeoutClientTabletCache.java
@@ -18,6 +18,7 @@
*/
package org.apache.accumulo.core.clientImpl;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -84,7 +85,7 @@ public class TimeoutClientTabletCache extends
SyncingClientTabletCache {
@Override
public <T extends Mutation> void binMutations(ClientContext context, List<T>
mutations,
- Map<String,TabletServerMutations<T>> binnedMutations, List<T> failures)
+ Map<String,TabletServerMutations<T>> binnedMutations, ArrayList<T>
failures)
throws AccumuloException, AccumuloSecurityException,
TableNotFoundException,
InvalidTabletHostingRequestException {
try {
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/Bulk.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/Bulk.java
index 0896971203..f592be2e90 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/Bulk.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/Bulk.java
@@ -167,13 +167,16 @@ public class Bulk {
}
public static class Files implements Iterable<FileInfo> {
- final Map<String,FileInfo> files = new HashMap<>();
+ final Map<String,FileInfo> files;
public Files(Collection<FileInfo> files) {
+ this.files = new HashMap<>(files.size(), 1.0f);
files.forEach(this::add);
}
- public Files() {}
+ public Files() {
+ this.files = new HashMap<>();
+ }
public void add(FileInfo fi) {
if (files.putIfAbsent(fi.name, fi) != null) {
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/BulkImport.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/BulkImport.java
index 3bc807f0d4..9a925de345 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/BulkImport.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/bulk/BulkImport.java
@@ -373,7 +373,7 @@ public class BulkImport implements
ImportDestinationArguments, ImportMappingOpti
}
private static Map<String,Long> getFileLenMap(List<FileStatus> statuses) {
- HashMap<String,Long> fileLens = new HashMap<>();
+ HashMap<String,Long> fileLens = new HashMap<>(statuses.size(), 1.0f);
for (FileStatus status : statuses) {
fileLens.put(status.getPath().getName(), status.getLen());
}
@@ -385,7 +385,7 @@ public class BulkImport implements
ImportDestinationArguments, ImportMappingOpti
List<FileStatus> statuses) {
Map<String,Long> fileLens = getFileLenMap(statuses);
- Map<String,Long> absFileLens = new HashMap<>();
+ Map<String,Long> absFileLens = new HashMap<>(fileLens.size(), 1.0f);
fileLens.forEach((k, v) -> absFileLens.put(pathToCacheId(new Path(dir,
k)), v));
Cache<String,Long> fileLenCache =
@@ -548,7 +548,7 @@ public class BulkImport implements
ImportDestinationArguments, ImportMappingOpti
// trips to the namenode
Cache<String,Long> fileLensCache = getPopulatedFileLenCache(context,
dirPath, files);
- List<CompletableFuture<Map<KeyExtent,Bulk.FileInfo>>> futures = new
ArrayList<>();
+ List<CompletableFuture<Map<KeyExtent,Bulk.FileInfo>>> futures = new
ArrayList<>(files.size());
CryptoService cs = CryptoFactoryLoader.getServiceForClientWithTable(
context.instanceOperations().getSystemConfiguration(), tableProps,
tableId);
@@ -564,7 +564,7 @@ public class BulkImport implements
ImportDestinationArguments, ImportMappingOpti
checkTabletCount(maxTablets, extents.size(), file.toString());
Map<KeyExtent,Long> estSizes =
estimateSizes(context.getConfiguration(), file,
fileStatus.getLen(), extents, fs, fileLensCache, cs);
- Map<KeyExtent,Bulk.FileInfo> pathLocations = new HashMap<>();
+ Map<KeyExtent,Bulk.FileInfo> pathLocations = new
HashMap<>(extents.size(), 1.0f);
for (KeyExtent ke : extents) {
pathLocations.put(ke, new Bulk.FileInfo(file.getPath(),
estSizes.getOrDefault(ke, 0L)));
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
index d197ef2256..cd9c3cab6d 100644
--- a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
+++ b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
@@ -464,7 +464,7 @@ public class ServiceLockPaths {
// thread.
Executor executor = servers.size() > 64 ? fetchExectuor :
MoreExecutors.directExecutor();
- List<Future<?>> futures = new ArrayList<>();
+ List<Future<?>> futures = new ArrayList<>(servers.size());
for (final String server : servers) {
if (addressPredicate.test(server)) {
diff --git
a/core/src/main/java/org/apache/accumulo/core/manager/balancer/BalanceParamsImpl.java
b/core/src/main/java/org/apache/accumulo/core/manager/balancer/BalanceParamsImpl.java
index c259ccfe9a..1409946451 100644
---
a/core/src/main/java/org/apache/accumulo/core/manager/balancer/BalanceParamsImpl.java
+++
b/core/src/main/java/org/apache/accumulo/core/manager/balancer/BalanceParamsImpl.java
@@ -60,7 +60,7 @@ public class BalanceParamsImpl implements
TabletBalancer.BalanceParameters {
Map<ResourceGroupId,Set<TabletServerId>> tserverGroups = new HashMap<>();
currentTServerGrouping.forEach((k, v) -> {
- Set<TabletServerId> servers = new HashSet<>();
+ Set<TabletServerId> servers = new HashSet<>(v.size());
v.forEach(tsi -> servers.add(TabletServerIdImpl.fromThrift(tsi)));
tserverGroups.put(k, servers);
});
diff --git
a/core/src/main/java/org/apache/accumulo/core/spi/compaction/RatioBasedCompactionPlanner.java
b/core/src/main/java/org/apache/accumulo/core/spi/compaction/RatioBasedCompactionPlanner.java
index 0f4cc10c5e..630f3a5bb7 100644
---
a/core/src/main/java/org/apache/accumulo/core/spi/compaction/RatioBasedCompactionPlanner.java
+++
b/core/src/main/java/org/apache/accumulo/core/spi/compaction/RatioBasedCompactionPlanner.java
@@ -493,7 +493,7 @@ public class RatioBasedCompactionPlanner implements
CompactionPlanner {
int batches = sortedFiles.size() / maxFilesToCompact - 1;
if (batches > 0) {
- ArrayList<Collection<CompactableFile>> jobs = new ArrayList<>();
+ ArrayList<Collection<CompactableFile>> jobs = new ArrayList<>(batches);
for (int i = 0; i < batches; i++) {
jobs.add(sortedFiles.subList(i * maxFilesToCompact, (i + 1) *
maxFilesToCompact));
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/spi/scan/ScanServersSnapshot.java
b/core/src/main/java/org/apache/accumulo/core/spi/scan/ScanServersSnapshot.java
index 61721f2e04..6926cfee06 100644
---
a/core/src/main/java/org/apache/accumulo/core/spi/scan/ScanServersSnapshot.java
+++
b/core/src/main/java/org/apache/accumulo/core/spi/scan/ScanServersSnapshot.java
@@ -47,7 +47,7 @@ class ScanServersSnapshot {
final Map<String,List<String>> serversByHost;
PerHostInfo(Collection<String> servers) {
- this.serversByHost = new HashMap<>();
+ this.serversByHost = new HashMap<>(servers.size());
servers.forEach(server -> {
var hp = HostAndPort.fromString(server);
diff --git
a/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
b/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
index 7c8e878531..54cd5d0ced 100644
---
a/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
+++
b/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
@@ -215,11 +215,12 @@ public class ExternalCompactionUtil {
ExecutorService executor, Consumer<TExternalCompaction> consumer)
throws InterruptedException {
- final List<RpcFuture<TExternalCompaction>> rcFutures = new ArrayList<>();
final List<ServerId> failures = new ArrayList<>();
+ final Set<ServerId> compactors =
+ context.instanceOperations().getServers(ServerId.Type.COMPACTOR);
+ final List<RpcFuture<TExternalCompaction>> rcFutures = new
ArrayList<>(compactors.size());
try {
- Set<ServerId> compactors =
context.instanceOperations().getServers(ServerId.Type.COMPACTOR);
compactors.forEach(s -> {
final HostAndPort address = HostAndPort.fromParts(s.getHost(),
s.getPort());
Future<TExternalCompaction> future =
diff --git
a/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java
b/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java
index cf4bd0aa0a..a2cf16c176 100644
---
a/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java
+++
b/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java
@@ -297,7 +297,7 @@ public class ClientTabletCacheImplTest {
private void runTest(ClientTabletCacheImpl metaCache, List<Mutation> ml,
Map<String,Map<KeyExtent,List<String>>> emb, String... efailures) throws
Exception {
Map<String,TabletServerMutations<Mutation>> binnedMutations = new
HashMap<>();
- List<Mutation> afailures = new ArrayList<>();
+ ArrayList<Mutation> afailures = new ArrayList<>();
metaCache.binMutations(context, ml, binnedMutations, afailures);
verify(emb, binnedMutations);
@@ -1819,7 +1819,7 @@ public class ClientTabletCacheImplTest {
ml.add(createNewMutation("" + c, "cf1:cq1=v3", "cf1:cq2=v4"));
}
Map<String,TabletServerMutations<Mutation>> binnedMutations = new
HashMap<>();
- List<Mutation> afailures = new ArrayList<>();
+ ArrayList<Mutation> afailures = new ArrayList<>();
assertEquals(List.of(), lookups);
metaCache.binMutations(context, ml, binnedMutations, afailures);
assertTrue(binnedMutations.isEmpty());
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
b/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
index d6972b90fa..c85dd5d6ea 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/fs/FileManager.java
@@ -115,7 +115,7 @@ public class FileManager {
long curTime = System.currentTimeMillis();
- ArrayList<FileSKVIterator> filesToClose = new ArrayList<>();
+ ArrayList<FileSKVIterator> filesToClose = new
ArrayList<>(openFiles.size());
// determine which files to close in a sync block, and then close the
// files outside of the sync block
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
b/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
index 3e86c0441d..f8b14875b1 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
@@ -418,7 +418,7 @@ public class LiveTServerSet implements ZooCacheWatcher {
Map<ResourceGroupId,Set<TServerInstance>> serverGroups) {
this.tserversInfo = null;
this.tservers = Set.copyOf(currentServers);
- Map<ResourceGroupId,Set<TServerInstance>> copy = new HashMap<>();
+ Map<ResourceGroupId,Set<TServerInstance>> copy = new
HashMap<>(serverGroups.size(), 1.0f);
serverGroups.forEach((k, v) -> copy.put(k, Set.copyOf(v)));
this.tserverGroups = Collections.unmodifiableMap(copy);
}
@@ -427,7 +427,7 @@ public class LiveTServerSet implements ZooCacheWatcher {
Map<ResourceGroupId,Set<TServerInstance>> serverGroups) {
this.tserversInfo = Map.copyOf(currentServers);
this.tservers = this.tserversInfo.keySet();
- Map<ResourceGroupId,Set<TServerInstance>> copy = new HashMap<>();
+ Map<ResourceGroupId,Set<TServerInstance>> copy = new
HashMap<>(serverGroups.size(), 1.0f);
serverGroups.forEach((k, v) -> copy.put(k, Set.copyOf(v)));
this.tserverGroups = Collections.unmodifiableMap(copy);
}
@@ -443,7 +443,8 @@ public class LiveTServerSet implements ZooCacheWatcher {
public synchronized LiveTServersSnapshot getSnapshot() {
if (tServersSnapshot == null) {
- HashMap<TServerInstance,TServerInfo> tServerInstances = new HashMap<>();
+ HashMap<TServerInstance,TServerInfo> tServerInstances =
+ new HashMap<>(current.values().size());
Map<ResourceGroupId,Set<TServerInstance>> tserversGroups = new
HashMap<>();
current.values().forEach(tServerInfo -> {
tServerInstances.put(tServerInfo.instance, tServerInfo);
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java
b/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java
index b4435f1fb1..c6d20e5c3b 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java
@@ -177,7 +177,7 @@ public class ConditionalTabletsMutatorImpl implements
Ample.ConditionalTabletsMu
.logInterval(Duration.ofMinutes(3)).createRetry();
}
- private Iterator<ConditionalWriter.Result> writeMutations(ConditionalWriter
conditionalWriter) {
+ private List<ConditionalWriter.Result> writeMutations(ConditionalWriter
conditionalWriter) {
var results = conditionalWriter.write(mutations.iterator());
List<ConditionalWriter.Result> resultsList = new ArrayList<>();
@@ -206,7 +206,7 @@ public class ConditionalTabletsMutatorImpl implements
Ample.ConditionalTabletsMu
partitionResults(results, resultsList, unknownResults);
}
- return resultsList.iterator();
+ return resultsList;
}
private Ample.ConditionalResult.Status mapStatus(KeyExtent extent,
@@ -251,10 +251,11 @@ public class ConditionalTabletsMutatorImpl implements
Ample.ConditionalTabletsMu
var results = writeMutations(conditionalWriter);
- var resultsMap = new HashMap<KeyExtent,ConditionalWriter.Result>();
+ var resultsMap = new
HashMap<KeyExtent,ConditionalWriter.Result>(results.size(), 1.0f);
- while (results.hasNext()) {
- var result = results.next();
+ var resultsIter = results.iterator();
+ while (resultsIter.hasNext()) {
+ var result = resultsIter.next();
var row = new Text(result.getMutation().getRow());
resultsMap.put(extents.get(row), result);
}
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
b/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
index c0687b53cc..70039a2fab 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
@@ -129,7 +129,8 @@ public class AuditedSecurityOperation extends
SecurityOperation {
private static final int MAX_ELEMENTS_TO_LOG = 10;
private static List<String> truncate(Collection<?> list) {
- List<String> result = new ArrayList<>();
+ List<String> result =
+ new ArrayList<>(list.size() > MAX_ELEMENTS_TO_LOG ?
MAX_ELEMENTS_TO_LOG + 1 : list.size());
int i = 0;
for (Object obj : list) {
if (i++ > MAX_ELEMENTS_TO_LOG) {
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/split/SplitUtils.java
b/server/base/src/main/java/org/apache/accumulo/server/split/SplitUtils.java
index ac4d03a53e..dd1c312754 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/split/SplitUtils.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/split/SplitUtils.java
@@ -110,7 +110,7 @@ public class SplitUtils {
private static ArrayList<FileSKVIterator> openIndexes(ServerContext context,
TableConfiguration tableConf, Collection<StoredTabletFile> files) throws
IOException {
- ArrayList<FileSKVIterator> readers = new ArrayList<>();
+ ArrayList<FileSKVIterator> readers = new ArrayList<>(files.size());
try {
for (TabletFile file : files) {
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
index c7c1a3cc05..ed20d3e0ff 100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
@@ -799,7 +799,7 @@ public class Manager extends AbstractServer
long start = System.currentTimeMillis();
final SortedMap<TServerInstance,TabletServerStatus> result = new
ConcurrentSkipListMap<>();
final RateLimiter shutdownServerRateLimiter =
RateLimiter.create(MAX_SHUTDOWNS_PER_SEC);
- final ArrayList<Future<?>> tasks = new ArrayList<>();
+ final ArrayList<Future<?>> tasks = new ArrayList<>(currentServers.size());
for (TServerInstance serverInstance : currentServers) {
final TServerInstance server = serverInstance;
if (threads == 0) {
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
index 19aaaa1bd0..90b78baa13 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
@@ -786,7 +786,7 @@ public class ManagerClientServiceHandler implements
ManagerClientService.Iface {
}
var results = tabletsMutator.process();
- List<TKeyExtent> updated = new ArrayList<>();
+ List<TKeyExtent> updated = new ArrayList<>(results.size());
results.forEach((key, result) -> {
if (result.getStatus() == Status.ACCEPTED) {
updated.add(result.getExtent().toThrift());
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java
index 4537cf3cd2..dd1d78faac 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/BulkImportMove.java
@@ -95,7 +95,7 @@ class BulkImportMove extends AbstractBulkFateOperation {
final VolumeManager fs, Map<String,String> renames) throws Exception {
env.getContext().getAmple().addBulkLoadInProgressFlag(
"/" + bulkDir.getParent().getName() + "/" + bulkDir.getName(), fateId);
- Map<Path,Path> oldToNewMap = new HashMap<>();
+ Map<Path,Path> oldToNewMap = new HashMap<>(renames.size(), 1.0f);
for (Map.Entry<String,String> renameEntry : renames.entrySet()) {
final Path originalPath = new Path(sourceDir, renameEntry.getKey());
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java
index 75c71f0222..61f11c1950 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/LoadFiles.java
@@ -165,7 +165,7 @@ class LoadFiles extends AbstractBulkFateOperation {
void load(List<TabletMetadata> tablets, Files files) {
- Map<ReferencedTabletFile,Bulk.FileInfo> toLoad = new HashMap<>();
+ Map<ReferencedTabletFile,Bulk.FileInfo> toLoad = new
HashMap<>(files.getSize(), 1.0f);
for (var fileInfo : files) {
toLoad.put(new ReferencedTabletFile(new Path(bulkDir,
fileInfo.getFileName())), fileInfo);
}
@@ -223,7 +223,7 @@ class LoadFiles extends AbstractBulkFateOperation {
continue;
}
- Map<ReferencedTabletFile,DataFileValue> filesToLoad = new HashMap<>();
+ Map<ReferencedTabletFile,DataFileValue> filesToLoad = new
HashMap<>(toLoad.size(), 1.0f);
var tabletTime = TabletTime.getInstance(tablet.getTime());
@@ -283,10 +283,7 @@ class LoadFiles extends AbstractBulkFateOperation {
private Map<KeyExtent,Long> allocateTimestamps(List<TabletMetadata>
tablets, int numStamps) {
- Map<HostAndPort,List<TKeyExtent>> serversToAsk = new HashMap<>();
-
- Map<KeyExtent,Long> allTimestamps = new HashMap<>();
-
+ Map<HostAndPort,List<TKeyExtent>> serversToAsk = new
HashMap<>(tablets.size());
for (var tablet : tablets) {
if (tablet.getLocation() != null && tablet.getLocation().getType() ==
CURRENT) {
var location = tablet.getLocation().getHostAndPort();
@@ -295,6 +292,7 @@ class LoadFiles extends AbstractBulkFateOperation {
}
}
+ Map<KeyExtent,Long> allTimestamps = new HashMap<>(serversToAsk.size());
for (var entry : serversToAsk.entrySet()) {
HostAndPort server = entry.getKey();
List<TKeyExtent> extents = entry.getValue();
@@ -326,7 +324,7 @@ class LoadFiles extends AbstractBulkFateOperation {
log.trace("{} allocate timestamps request to {} returned {}
timestamps", fateId, server,
timestamps.size());
- var converted = new HashMap<KeyExtent,Long>();
+ var converted = new HashMap<KeyExtent,Long>(timestamps.size(), 1.0f);
timestamps.forEach((k, v) -> converted.put(KeyExtent.fromThrift(k),
v));
return converted;
} catch (TException ex) {
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java
index f629550231..5d45b0c212 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java
@@ -102,7 +102,8 @@ public class TabletRefresher {
while (!refreshesNeeded.isEmpty()) {
- Map<TabletMetadata.Location,Future<List<TKeyExtent>>> futures = new
HashMap<>();
+ Map<TabletMetadata.Location,Future<List<TKeyExtent>>> futures =
+ new HashMap<>(refreshesNeeded.size(), 1.0f);
for (Map.Entry<TabletMetadata.Location,List<TKeyExtent>> entry :
refreshesNeeded.entrySet()) {
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
index baa20300af..900cbe5b8d 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/RowLocks.java
@@ -90,6 +90,7 @@ class RowLocks {
ArrayList<RowLock> locks = new ArrayList<>();
for (List<ServerConditionalMutation> scml : updates.values()) {
+ locks.ensureCapacity(locks.size() + scml.size());
for (ServerConditionalMutation scm : scml) {
locks.add(getRowLock(new ArrayByteSequence(scm.getRow())));
}
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
index ce043e0e6b..0d3363c302 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java
@@ -695,7 +695,7 @@ public class ScanServer extends AbstractServer
}
}
- Map<StoredTabletFile,KeyExtent> allFiles = new HashMap<>();
+ Map<StoredTabletFile,KeyExtent> allFiles = new HashMap<>(extents.size());
tabletsMetadata.forEach((extent, tm) -> {
tm.getFiles().forEach(file -> allFiles.put(file, extent));
@@ -856,7 +856,7 @@ public class ScanServer extends AbstractServer
}
// Convert failures
- Map<TKeyExtent,List<TRange>> failures = new HashMap<>();
+ Map<TKeyExtent,List<TRange>> failures = new
HashMap<>(failedReservations.size(), 1.0f);
failedReservations.forEach(extent -> {
failures.put(extent.toThrift(), extents.get(extent));
});
@@ -1134,7 +1134,7 @@ public class ScanServer extends AbstractServer
throw new TException("Scan Server batch must include at least one
extent");
}
- final Map<KeyExtent,List<TRange>> batch = new HashMap<>();
+ final Map<KeyExtent,List<TRange>> batch = new HashMap<>(tbatch.size(),
1.0f);
for (Entry<TKeyExtent,List<TRange>> entry : tbatch.entrySet()) {
KeyExtent extent = getKeyExtent(entry.getKey());
@@ -1150,8 +1150,9 @@ public class ScanServer extends AbstractServer
try (ScanReservation reservation = reserveFilesInstrumented(batch)) {
- HashMap<KeyExtent,TabletBase> tablets = new HashMap<>();
- reservation.getTabletMetadataExtents().forEach(extent -> {
+ var extents = reservation.getTabletMetadataExtents();
+ HashMap<KeyExtent,TabletBase> tablets = new HashMap<>(extents.size(),
1.0f);
+ extents.forEach(extent -> {
try {
tablets.put(extent, reservation.newTablet(this, extent));
} catch (IOException e) {
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
index 00372ac267..c571c66787 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java
@@ -584,6 +584,7 @@ public class TabletClientHandler implements
TabletServerClientService.Iface,
final Tablet tablet = server.getOnlineTablet(entry.getKey());
if (tablet == null || tablet.isClosed()) {
+ results.ensureCapacity(results.size() + entry.getValue().size());
for (ServerConditionalMutation scm : entry.getValue()) {
results.add(new TCMResult(scm.getID(), TCMStatus.IGNORED));
}
@@ -607,6 +608,7 @@ public class TabletClientHandler implements
TabletServerClientService.Iface,
// clear anything added while checking conditions.
resultsSubList.clear();
+ results.ensureCapacity(results.size() + entry.getValue().size());
for (ServerConditionalMutation scm : entry.getValue()) {
results.add(new TCMResult(scm.getID(), TCMStatus.IGNORED));
}
@@ -1201,11 +1203,12 @@ public class TabletClientHandler implements
TabletServerClientService.Iface,
// handle that more expensive case if needed.
var tabletsSnapshot = server.getOnlineTablets();
- Map<KeyExtent,Tablet.RefreshSession> refreshSessions = new HashMap<>();
+ Map<KeyExtent,Tablet.RefreshSession> refreshSessions = new
HashMap<>(refreshes.size(), 1.0f);
// Created this as synchronized list because it's passed to a lambda that
could possibly run in
// another thread.
- List<TKeyExtent> unableToRefresh = Collections.synchronizedList(new
ArrayList<>());
+ List<TKeyExtent> unableToRefresh =
+ Collections.synchronizedList(new ArrayList<>(refreshes.size()));
for (var tkextent : refreshes) {
var extent = KeyExtent.fromThrift(tkextent);
@@ -1254,7 +1257,7 @@ public class TabletClientHandler implements
TabletServerClientService.Iface,
var tabletsSnapshot = server.getOnlineTablets();
- Map<TKeyExtent,Long> timestamps = new HashMap<>();
+ Map<TKeyExtent,Long> timestamps = new HashMap<>(extents.size(), 1.0f);
for (var textent : extents) {
var extent = KeyExtent.fromThrift(textent);
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
index dba90916ef..392c347dda 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java
@@ -155,6 +155,7 @@ public final class DfsLogger implements
Comparable<DfsLogger> {
Thread.currentThread().interrupt();
continue;
}
+ work.ensureCapacity(work.size() + workQueue.size());
workQueue.drainTo(work);
Optional<Boolean> shouldHSync = Optional.empty();
@@ -604,7 +605,7 @@ public final class DfsLogger implements
Comparable<DfsLogger> {
public LoggerOperation logManyTablets(Collection<TabletMutations> mutations)
throws IOException {
Durability durability = Durability.NONE;
- List<Pair<LogFileKey,LogFileValue>> data = new ArrayList<>();
+ List<Pair<LogFileKey,LogFileValue>> data = new
ArrayList<>(mutations.size());
for (TabletMutations tabletMutations : mutations) {
LogFileKey key = new LogFileKey();
key.setEvent(MANY_MUTATIONS);