This is an automated email from the ASF dual-hosted git repository.
dlmarion pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/2.1 by this push:
new 3d34c27538 Create ArrayList with initial sizes where possible (#6450)
3d34c27538 is described below
commit 3d34c27538d87c8e6e11879f5f6e9a11d43a159e
Author: Dave Marion <[email protected]>
AuthorDate: Tue Jul 7 07:50:53 2026 -0400
Create ArrayList with initial sizes where possible (#6450)
Where possible set the initial size of the ArrayList
when creating it to avoid the expense of the resize
operation (new list creation and copy).
---
.../org/apache/accumulo/core/client/IsolatedScanner.java | 14 +++++++++-----
.../accumulo/core/clientImpl/InstanceOperationsImpl.java | 16 +++++++++-------
.../core/clientImpl/TabletServerBatchReaderIterator.java | 8 ++++----
.../java/org/apache/accumulo/core/data/Mutation.java | 4 ++--
.../apache/accumulo/core/file/rfile/MultiLevelIndex.java | 2 +-
.../accumulo/core/iteratorsImpl/IteratorConfigUtil.java | 4 ++--
.../core/iteratorsImpl/system/SystemIteratorUtil.java | 4 ++--
.../apache/accumulo/core/rpc/clients/TServerClient.java | 5 ++---
.../apache/accumulo/core/spi/balancer/GroupBalancer.java | 3 ++-
.../accumulo/core/spi/balancer/SimpleLoadBalancer.java | 6 +++---
.../core/spi/compaction/DefaultCompactionPlanner.java | 2 +-
.../java/org/apache/accumulo/core/summary/Gatherer.java | 6 +++---
.../java/org/apache/accumulo/core/util/ByteArraySet.java | 2 +-
.../org/apache/accumulo/core/util/ByteBufferUtil.java | 2 +-
.../apache/accumulo/server/compaction/FileCompactor.java | 2 +-
.../java/org/apache/accumulo/server/fs/FileManager.java | 6 +++---
.../org/apache/accumulo/server/fs/VolumeManagerImpl.java | 2 +-
.../apache/accumulo/server/util/MetadataTableUtil.java | 3 +--
.../apache/accumulo/coordinator/CompactionFinalizer.java | 5 +++--
.../apache/accumulo/coordinator/SharedBatchWriter.java | 2 +-
.../accumulo/manager/ManagerClientServiceHandler.java | 2 +-
.../java/org/apache/accumulo/tserver/log/LogSorter.java | 7 ++++---
.../apache/accumulo/tserver/session/SessionManager.java | 3 ++-
.../apache/accumulo/tserver/tablet/CompactableImpl.java | 3 ++-
.../apache/accumulo/tserver/tablet/ScanDataSource.java | 3 +--
.../java/org/apache/accumulo/tserver/tablet/Scanner.java | 4 ++--
.../java/org/apache/accumulo/tserver/tablet/Tablet.java | 9 +++++----
27 files changed, 69 insertions(+), 60 deletions(-)
diff --git
a/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
b/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
index 5a7328a5f2..91fba46842 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/IsolatedScanner.java
@@ -143,7 +143,7 @@ public class IsolatedScanner extends ScannerOptions
implements Scanner {
this.batchSize = batchSize;
this.readaheadThreshold = readaheadThreshold;
- buffer = bufferFactory.newBuffer();
+ buffer = bufferFactory.newBuffer(this.batchSize);
this.source = newIterator(range);
@@ -173,7 +173,7 @@ public class IsolatedScanner extends ScannerOptions
implements Scanner {
}
public interface RowBufferFactory {
- RowBuffer newBuffer();
+ RowBuffer newBuffer(int initialSize);
}
public interface RowBuffer extends Iterable<Entry<Key,Value>> {
@@ -188,14 +188,18 @@ public class IsolatedScanner extends ScannerOptions
implements Scanner {
public static class MemoryRowBufferFactory implements RowBufferFactory {
@Override
- public RowBuffer newBuffer() {
- return new MemoryRowBuffer();
+ public RowBuffer newBuffer(int initialSize) {
+ return new MemoryRowBuffer(initialSize);
}
}
public static class MemoryRowBuffer implements RowBuffer {
- private final ArrayList<Entry<Key,Value>> buffer = new ArrayList<>();
+ private final ArrayList<Entry<Key,Value>> buffer;
+
+ private MemoryRowBuffer(int initialSize) {
+ buffer = new ArrayList<>(initialSize);
+ }
@Override
public void add(Entry<Key,Value> entry) {
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 4f865ee808..e21b7357a8 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
@@ -230,9 +230,10 @@ public class InstanceOperationsImpl implements
InstanceOperations {
@Override
public List<String> getTabletServers() {
ZooCache cache = context.getZooCache();
- String path = context.getZooKeeperRoot() + Constants.ZTSERVERS;
- List<String> results = new ArrayList<>();
- for (String candidate : cache.getChildren(path)) {
+ final String path = context.getZooKeeperRoot() + Constants.ZTSERVERS;
+ final List<String> candidates = cache.getChildren(path);
+ final List<String> results = new ArrayList<>(candidates.size());
+ for (String candidate : candidates) {
var children = cache.getChildren(path + "/" + candidate);
if (children != null && !children.isEmpty()) {
var copy = new ArrayList<>(children);
@@ -254,8 +255,9 @@ public class InstanceOperationsImpl implements
InstanceOperations {
try {
client = getClient(ThriftClientTypes.TABLET_SCAN, parsedTserver,
context);
- List<ActiveScan> as = new ArrayList<>();
- for (var activeScan : client.getActiveScans(TraceUtil.traceInfo(),
context.rpcCreds())) {
+ final var scans = client.getActiveScans(TraceUtil.traceInfo(),
context.rpcCreds());
+ List<ActiveScan> as = new ArrayList<>(scans.size());
+ for (var activeScan : scans) {
try {
as.add(new ActiveScanImpl(context, activeScan));
} catch (TableNotFoundException e) {
@@ -327,7 +329,7 @@ public class InstanceOperationsImpl implements
InstanceOperations {
var executorService =
context.threadPools().getPoolBuilder(INSTANCE_OPS_COMPACTIONS_FINDER_POOL)
.numCoreThreads(numThreads).build();
try {
- List<Future<List<ActiveCompaction>>> futures = new ArrayList<>();
+ List<Future<List<ActiveCompaction>>> futures = new
ArrayList<>(tservers.size());
for (String tserver : tservers) {
futures.add(executorService.submit(() ->
getActiveCompactions(tserver)));
@@ -345,7 +347,7 @@ public class InstanceOperationsImpl implements
InstanceOperations {
}
});
- List<ActiveCompaction> ret = new ArrayList<>();
+ List<ActiveCompaction> ret = new ArrayList<>(futures.size());
for (Future<List<ActiveCompaction>> future : futures) {
try {
ret.addAll(future.get());
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 7dcda72b9d..ccd5ec6e08 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
@@ -306,7 +306,7 @@ public class TabletServerBatchReaderIterator implements
Iterator<Entry<Key,Value
binnedRanges2.put(entry.getKey(), tabletMap);
for (Entry<KeyExtent,List<Range>> tabletRanges :
entry.getValue().entrySet()) {
Range tabletRange = tabletRanges.getKey().toDataRange();
- List<Range> clippedRanges = new ArrayList<>();
+ List<Range> clippedRanges = new
ArrayList<>(tabletRanges.getValue().size());
tabletMap.put(tabletRanges.getKey(), clippedRanges);
for (Range range : tabletRanges.getValue()) {
clippedRanges.add(tabletRange.clip(range));
@@ -342,7 +342,7 @@ public class TabletServerBatchReaderIterator implements
Iterator<Entry<Key,Value
failSleepTime = Math.min(5000, failSleepTime * 2);
Map<String,Map<KeyExtent,List<Range>>> binnedRanges = new HashMap<>();
- List<Range> allRanges = new ArrayList<>();
+ List<Range> allRanges = new
ArrayList<>(failures.values().stream().mapToInt(List::size).sum());
for (List<Range> ranges : failures.values()) {
allRanges.addAll(ranges);
@@ -566,7 +566,7 @@ public class TabletServerBatchReaderIterator implements
Iterator<Entry<Key,Value
List<String> locations = new ArrayList<>(binnedRanges.keySet());
Collections.shuffle(locations);
- List<QueryTask> queryTasks = new ArrayList<>();
+ List<QueryTask> queryTasks = new ArrayList<>(locations.size());
for (final String tsLocation : locations) {
@@ -832,7 +832,7 @@ public class TabletServerBatchReaderIterator implements
Iterator<Entry<Key,Value
// copy requested to unscanned map. we will remove ranges as they are
scanned in trackScanning()
for (Entry<KeyExtent,List<Range>> entry : requested.entrySet()) {
- ArrayList<Range> ranges = new ArrayList<>();
+ ArrayList<Range> ranges = new ArrayList<>(entry.getValue().size());
for (Range range : entry.getValue()) {
ranges.add(new Range(range));
}
diff --git a/core/src/main/java/org/apache/accumulo/core/data/Mutation.java
b/core/src/main/java/org/apache/accumulo/core/data/Mutation.java
index 53f834cedf..25393a51bb 100644
--- a/core/src/main/java/org/apache/accumulo/core/data/Mutation.java
+++ b/core/src/main/java/org/apache/accumulo/core/data/Mutation.java
@@ -1440,8 +1440,8 @@ public class Mutation implements Writable {
boolean valuesPresent = (first & 0x01) == 0x01;
if (valuesPresent) {
- values = new ArrayList<>();
int numValues = WritableUtils.readVInt(in);
+ values = new ArrayList<>(numValues);
for (int i = 0; i < numValues; i++) {
len = WritableUtils.readVInt(in);
byte[] val = new byte[len];
@@ -1480,8 +1480,8 @@ public class Mutation implements Writable {
List<byte[]> localValues;
boolean valuesPresent = in.readBoolean();
if (valuesPresent) {
- localValues = new ArrayList<>();
int numValues = in.readInt();
+ localValues = new ArrayList<>(numValues);
for (int i = 0; i < numValues; i++) {
len = in.readInt();
byte[] val = new byte[len];
diff --git
a/core/src/main/java/org/apache/accumulo/core/file/rfile/MultiLevelIndex.java
b/core/src/main/java/org/apache/accumulo/core/file/rfile/MultiLevelIndex.java
index 9c7b249fff..69e3c3ba3a 100644
---
a/core/src/main/java/org/apache/accumulo/core/file/rfile/MultiLevelIndex.java
+++
b/core/src/main/java/org/apache/accumulo/core/file/rfile/MultiLevelIndex.java
@@ -361,7 +361,7 @@ public class MultiLevelIndex {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
- ArrayList<Integer> oal = new ArrayList<>();
+ ArrayList<Integer> oal = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
IndexEntry ie = new IndexEntry(false);
diff --git
a/core/src/main/java/org/apache/accumulo/core/iteratorsImpl/IteratorConfigUtil.java
b/core/src/main/java/org/apache/accumulo/core/iteratorsImpl/IteratorConfigUtil.java
index 5fb0afdca9..1c6ea1577c 100644
---
a/core/src/main/java/org/apache/accumulo/core/iteratorsImpl/IteratorConfigUtil.java
+++
b/core/src/main/java/org/apache/accumulo/core/iteratorsImpl/IteratorConfigUtil.java
@@ -196,8 +196,8 @@ public class IteratorConfigUtil {
List<IteratorSetting> iterators, IteratorEnvironment env)
throws IOException, ReflectiveOperationException {
- List<IterInfo> ssiList = new ArrayList<>();
- Map<String,Map<String,String>> ssio = new HashMap<>();
+ List<IterInfo> ssiList = new ArrayList<>(iterators.size());
+ Map<String,Map<String,String>> ssio = new HashMap<>(iterators.size());
for (IteratorSetting is : iterators) {
ssiList.add(new IterInfo(is.getPriority(), is.getIteratorClass(),
is.getName()));
diff --git
a/core/src/main/java/org/apache/accumulo/core/iteratorsImpl/system/SystemIteratorUtil.java
b/core/src/main/java/org/apache/accumulo/core/iteratorsImpl/system/SystemIteratorUtil.java
index bac1d31ef1..339c2dad2f 100644
---
a/core/src/main/java/org/apache/accumulo/core/iteratorsImpl/system/SystemIteratorUtil.java
+++
b/core/src/main/java/org/apache/accumulo/core/iteratorsImpl/system/SystemIteratorUtil.java
@@ -53,7 +53,7 @@ public class SystemIteratorUtil {
}
public static IteratorConfig toIteratorConfig(List<IteratorSetting>
iterators) {
- ArrayList<TIteratorSetting> tisList = new ArrayList<>();
+ ArrayList<TIteratorSetting> tisList = new ArrayList<>(iterators.size());
for (IteratorSetting iteratorSetting : iterators) {
tisList.add(toTIteratorSetting(iteratorSetting));
@@ -63,7 +63,7 @@ public class SystemIteratorUtil {
}
public static List<IteratorSetting> toIteratorSettings(IteratorConfig ic) {
- List<IteratorSetting> ret = new ArrayList<>();
+ List<IteratorSetting> ret = new ArrayList<>(ic.getIterators().size());
for (TIteratorSetting tIteratorSetting : ic.getIterators()) {
ret.add(toIteratorSetting(tIteratorSetting));
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/rpc/clients/TServerClient.java
b/core/src/main/java/org/apache/accumulo/core/rpc/clients/TServerClient.java
index 5f017668e9..8e5553e09c 100644
--- a/core/src/main/java/org/apache/accumulo/core/rpc/clients/TServerClient.java
+++ b/core/src/main/java/org/apache/accumulo/core/rpc/clients/TServerClient.java
@@ -72,9 +72,8 @@ public interface TServerClient<C extends TServiceClient> {
final long rpcTimeout = context.getClientTimeoutInMillis();
final ZooCache zc = context.getZooCache();
- final List<String> tservers = new ArrayList<>();
-
- tservers.addAll(zc.getChildren(context.getZooKeeperRoot() +
Constants.ZTSERVERS));
+ final List<String> tservers =
+ new ArrayList<>(zc.getChildren(context.getZooKeeperRoot() +
Constants.ZTSERVERS));
if (tservers.isEmpty()) {
if (warned.compareAndSet(false, true)) {
diff --git
a/core/src/main/java/org/apache/accumulo/core/spi/balancer/GroupBalancer.java
b/core/src/main/java/org/apache/accumulo/core/spi/balancer/GroupBalancer.java
index 99e3c290d0..753980211f 100644
---
a/core/src/main/java/org/apache/accumulo/core/spi/balancer/GroupBalancer.java
+++
b/core/src/main/java/org/apache/accumulo/core/spi/balancer/GroupBalancer.java
@@ -143,7 +143,8 @@ public abstract class GroupBalancer implements
TabletBalancer {
Function<TabletId,String> partitioner = getLoggingPartitioner();
- List<ComparablePair<String,TabletId>> tabletsByGroup = new ArrayList<>();
+ List<ComparablePair<String,TabletId>> tabletsByGroup =
+ new ArrayList<>(params.unassignedTablets().size());
for (Entry<TabletId,TabletServerId> entry :
params.unassignedTablets().entrySet()) {
TabletServerId last = entry.getValue();
if (last != null) {
diff --git
a/core/src/main/java/org/apache/accumulo/core/spi/balancer/SimpleLoadBalancer.java
b/core/src/main/java/org/apache/accumulo/core/spi/balancer/SimpleLoadBalancer.java
index b593a104fe..a40d052206 100644
---
a/core/src/main/java/org/apache/accumulo/core/spi/balancer/SimpleLoadBalancer.java
+++
b/core/src/main/java/org/apache/accumulo/core/spi/balancer/SimpleLoadBalancer.java
@@ -168,7 +168,7 @@ public class SimpleLoadBalancer implements TabletBalancer {
// Sort by total number of online tablets, per server
int total = 0;
- ArrayList<ServerCounts> totals = new ArrayList<>();
+ ArrayList<ServerCounts> totals = new ArrayList<>(current.size());
for (Entry<TabletServerId,TServerStatus> entry : current.entrySet()) {
int serverTotal = 0;
if (entry.getValue() != null && entry.getValue().getTableMap() !=
null) {
@@ -241,11 +241,11 @@ public class SimpleLoadBalancer implements TabletBalancer
{
List<TabletMigration> move(ServerCounts tooMuch, ServerCounts tooLittle, int
count,
Map<TableId,Map<TabletId,TabletStatistics>> donerTabletStats) {
- if (count == 0) {
+ if (count <= 0) {
return Collections.emptyList();
}
- List<TabletMigration> result = new ArrayList<>();
+ List<TabletMigration> result = new ArrayList<>(count);
// Copy counts so we can update them as we propose migrations
Map<TableId,Integer> tooMuchMap = tabletCountsPerTable(tooMuch.status);
Map<TableId,Integer> tooLittleMap = tabletCountsPerTable(tooLittle.status);
diff --git
a/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
b/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
index 99bfd8472c..0103243ef4 100644
---
a/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
+++
b/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
@@ -180,7 +180,7 @@ public class DefaultCompactionPlanner implements
CompactionPlanner {
ExecutorConfig[] execConfigs =
new Gson().fromJson(params.getOptions().get("executors"),
ExecutorConfig[].class);
- List<Executor> tmpExec = new ArrayList<>();
+ List<Executor> tmpExec = new ArrayList<>(execConfigs.length);
for (ExecutorConfig executorConfig : execConfigs) {
Long maxSize = executorConfig.maxSize == null ? null
diff --git a/core/src/main/java/org/apache/accumulo/core/summary/Gatherer.java
b/core/src/main/java/org/apache/accumulo/core/summary/Gatherer.java
index a917cdf7e7..850395d1aa 100644
--- a/core/src/main/java/org/apache/accumulo/core/summary/Gatherer.java
+++ b/core/src/main/java/org/apache/accumulo/core/summary/Gatherer.java
@@ -359,7 +359,7 @@ public class Gatherer {
Map<String,Map<TabletFile,List<TRowRange>>> filesGBL;
filesGBL = getFilesGroupedByLocation(fileSelector);
- List<CompletableFuture<ProcessedFiles>> futures = new ArrayList<>();
+ List<CompletableFuture<ProcessedFiles>> futures = new
ArrayList<>(filesGBL.size() + 1);
if (previousWork != null) {
futures.add(CompletableFuture
.completedFuture(new ProcessedFiles(previousWork.summaries,
factory)));
@@ -433,7 +433,7 @@ public class Gatherer {
public Future<SummaryCollection> processFiles(FileSystemResolver volMgr,
Map<String,List<TRowRange>> files, BlockCache summaryCache, BlockCache
indexCache,
Cache<String,Long> fileLenCache, ExecutorService srp) {
- List<CompletableFuture<SummaryCollection>> futures = new ArrayList<>();
+ List<CompletableFuture<SummaryCollection>> futures = new
ArrayList<>(files.size());
for (Entry<String,List<TRowRange>> entry : files.entrySet()) {
futures.add(CompletableFuture.supplyAsync(() -> {
List<RowRange> rrl =
@@ -504,7 +504,7 @@ public class Gatherer {
// have each tablet server process ~100K files
int numRequest = Math.max(numFiles / 100_000, 1);
- List<CompletableFuture<SummaryCollection>> futures = new ArrayList<>();
+ List<CompletableFuture<SummaryCollection>> futures = new
ArrayList<>(numRequest);
AtomicBoolean cancelFlag = new AtomicBoolean(false);
diff --git a/core/src/main/java/org/apache/accumulo/core/util/ByteArraySet.java
b/core/src/main/java/org/apache/accumulo/core/util/ByteArraySet.java
index 9fb0edef9b..e8828a91ce 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/ByteArraySet.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/ByteArraySet.java
@@ -40,7 +40,7 @@ public class ByteArraySet extends TreeSet<byte[]> {
}
public static ByteArraySet fromStrings(Collection<String> c) {
- List<byte[]> lst = new ArrayList<>();
+ List<byte[]> lst = new ArrayList<>(c.size());
for (String s : c) {
lst.add(s.getBytes(UTF_8));
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/util/ByteBufferUtil.java
b/core/src/main/java/org/apache/accumulo/core/util/ByteBufferUtil.java
index a06d7ac745..470d918d62 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/ByteBufferUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/ByteBufferUtil.java
@@ -56,7 +56,7 @@ public class ByteBufferUtil {
if (bytesList == null) {
return null;
}
- ArrayList<ByteBuffer> result = new ArrayList<>();
+ ArrayList<ByteBuffer> result = new ArrayList<>(bytesList.size());
for (byte[] bytes : bytesList) {
result.add(ByteBuffer.wrap(bytes));
}
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/compaction/FileCompactor.java
b/server/base/src/main/java/org/apache/accumulo/server/compaction/FileCompactor.java
index 1045d13680..9166782630 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/compaction/FileCompactor.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/compaction/FileCompactor.java
@@ -263,7 +263,7 @@ public class FileCompactor implements
Callable<CompactionStats> {
Collections.synchronizedSet(new HashSet<>());
public static List<CompactionInfo> getRunningCompactions() {
- ArrayList<CompactionInfo> compactions = new ArrayList<>();
+ ArrayList<CompactionInfo> compactions = new
ArrayList<>(runningCompactions.size());
runningCompactions.forEach(compactor -> compactions.add(new
CompactionInfo(compactor)));
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 9a3aad33c3..4e81899ed2 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
@@ -187,7 +187,7 @@ public class FileManager {
private List<FileSKVIterator> takeLRUOpenFiles(int numToTake) {
- ArrayList<OpenReader> openReaders = new ArrayList<>();
+ ArrayList<OpenReader> openReaders = new ArrayList<>(openFiles.size());
for (Entry<String,List<OpenReader>> entry : openFiles.entrySet()) {
openReaders.addAll(entry.getValue());
@@ -195,7 +195,7 @@ public class FileManager {
Collections.sort(openReaders);
- ArrayList<FileSKVIterator> ret = new ArrayList<>();
+ ArrayList<FileSKVIterator> ret = new ArrayList<>(openReaders.size());
for (int i = 0; i < numToTake && i < openReaders.size(); i++) {
OpenReader or = openReaders.get(i);
@@ -517,7 +517,7 @@ public class FileManager {
Map<FileSKVIterator,String> newlyReservedReaders = openFiles(
files.keySet().stream().map(TabletFile::getPathStr).collect(Collectors.toList()));
- ArrayList<InterruptibleIterator> iters = new ArrayList<>();
+ ArrayList<InterruptibleIterator> iters = new
ArrayList<>(newlyReservedReaders.size());
boolean sawTimeSet =
files.values().stream().anyMatch(DataFileValue::isTimeSet);
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
index 0a0b612a43..8477db3be7 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeManagerImpl.java
@@ -322,7 +322,7 @@ public class VolumeManagerImpl implements VolumeManager {
@Override
public void bulkRename(Map<Path,Path> oldToNewPathMap, int poolSize, String
poolName,
String transactionId) throws IOException {
- List<Future<Void>> results = new ArrayList<>();
+ List<Future<Void>> results = new ArrayList<>(oldToNewPathMap.size());
ExecutorService workerPool =
ThreadPools.getServerThreadPools().getPoolBuilder(poolName)
.numCoreThreads(poolSize).build();
oldToNewPathMap.forEach((oldPath, newPath) ->
results.add(workerPool.submit(() -> {
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
index 360ca94a81..c28b0a0f8f 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
@@ -375,7 +375,6 @@ public class MetadataTableUtil {
public static Pair<List<LogEntry>,SortedMap<StoredTabletFile,DataFileValue>>
getFileAndLogEntries(ServerContext context, KeyExtent extent) throws
IOException {
- ArrayList<LogEntry> result = new ArrayList<>();
TreeMap<StoredTabletFile,DataFileValue> sizes = new TreeMap<>();
TabletMetadata tablet = context.getAmple().readTablet(extent, FILES, LOGS,
PREV_ROW, DIR);
@@ -384,7 +383,7 @@ public class MetadataTableUtil {
throw new RuntimeException("Tablet " + extent + " not found in
metadata");
}
- result.addAll(tablet.getLogs());
+ ArrayList<LogEntry> result = new ArrayList<>(tablet.getLogs());
tablet.getFilesMap().forEach(sizes::put);
diff --git
a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionFinalizer.java
b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionFinalizer.java
index f392d9e1ce..a64ec4413b 100644
---
a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionFinalizer.java
+++
b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/CompactionFinalizer.java
@@ -193,13 +193,14 @@ public class CompactionFinalizer {
while (!Thread.interrupted()) {
try {
- ArrayList<ExternalCompactionFinalState> batch = new ArrayList<>();
+ ArrayList<ExternalCompactionFinalState> batch =
+ new ArrayList<>(pendingNotifications.size());
batch.add(pendingNotifications.take());
pendingNotifications.drainTo(batch);
LOG.trace("Processing pending of batch size {}", batch.size());
- List<Future<?>> futures = new ArrayList<>();
+ List<Future<?>> futures = new ArrayList<>(batch.size());
List<ExternalCompactionId> statusesToDelete = new ArrayList<>();
diff --git
a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/SharedBatchWriter.java
b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/SharedBatchWriter.java
index baf21be1d3..29c4a84f01 100644
---
a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/SharedBatchWriter.java
+++
b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/SharedBatchWriter.java
@@ -83,7 +83,7 @@ public class SharedBatchWriter {
private void processMutations() {
Timer timer = Timer.startNew();
while (true) {
- ArrayList<Work> batch = new ArrayList<>();
+ ArrayList<Work> batch = new ArrayList<>(mutations.size());
try {
batch.add(mutations.take());
} catch (InterruptedException e) {
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 11635facfd..e15fe6d1e2 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
@@ -626,7 +626,7 @@ public class ManagerClientServiceHandler implements
ManagerClientService.Iface {
}
Set<TServerInstance> tserverInstances = manager.onlineTabletServers();
- List<String> servers = new ArrayList<>();
+ List<String> servers = new ArrayList<>(tserverInstances.size());
for (TServerInstance tserverInstance : tserverInstances) {
servers.add(tserverInstance.getHostPort());
}
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
index c1ad0fd54c..d77f67301d 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
@@ -174,7 +174,7 @@ public class LogSorter {
final long bufferSize = sortedLogConf.getAsBytes(prop);
Thread.currentThread().setName("Sorting " + name + " for recovery");
while (true) {
- final ArrayList<Pair<LogFileKey,LogFileValue>> buffer = new
ArrayList<>();
+ final ArrayList<Pair<LogFileKey,LogFileValue>> buffer = new
ArrayList<>(512);
try {
long start = input.getPos();
while (input.getPos() - start < bufferSize) {
@@ -274,7 +274,8 @@ public class LogSorter {
var logFileKey = pair.getFirst();
var logFileValue = pair.getSecond();
Key k = logFileKey.toKey();
- keyListMap.computeIfAbsent(k, (key) -> new
ArrayList<>()).addAll(logFileValue.getMutations());
+ keyListMap.computeIfAbsent(k, (key) -> new
ArrayList<>(logFileValue.getMutations().size()))
+ .addAll(logFileValue.getMutations());
}
try (var writer = FileOperations.getInstance().newWriterBuilder()
@@ -302,8 +303,8 @@ public class LogSorter {
}
public List<RecoveryStatus> getLogSorts() {
- List<RecoveryStatus> result = new ArrayList<>();
synchronized (currentWork) {
+ List<RecoveryStatus> result = new ArrayList<>(currentWork.size());
for (Entry<String,LogProcessor> entries : currentWork.entrySet()) {
RecoveryStatus status = new RecoveryStatus();
status.name = entries.getKey();
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/session/SessionManager.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/session/SessionManager.java
index 01adc3cad0..830ab48749 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/session/SessionManager.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/session/SessionManager.java
@@ -445,7 +445,8 @@ public class SessionManager {
public List<ActiveScan> getActiveScans() {
- final List<ActiveScan> activeScans = new ArrayList<>();
+ final List<ActiveScan> activeScans =
+ new ArrayList<>(sessions.size() + deferredCleanupQueue.size());
final long ct = System.currentTimeMillis();
final Set<Entry<Long,Session>> copiedIdleSessions = new HashSet<>();
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
index 181ccfbbc9..93da60b68d 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
@@ -697,7 +697,8 @@ public class CompactableImpl implements Compactable {
tabletMutator.mutate();
}
- ArrayList<StoredTabletFile> extCompactingFiles = new ArrayList<>();
+ ArrayList<StoredTabletFile> extCompactingFiles = new ArrayList<>(
+ extCompactions.values().stream().mapToInt(ecm ->
ecm.getJobFiles().size()).sum());
extCompactions.forEach((ecid, ecMeta) -> {
if (!extCompactionsToRemove.containsKey(ecid)) {
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/ScanDataSource.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/ScanDataSource.java
index c53dd825ed..602f61c845 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/ScanDataSource.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/ScanDataSource.java
@@ -216,8 +216,7 @@ class ScanDataSource implements DataSource {
}
var builder = new
SystemIteratorEnvironmentImpl.Builder(tablet.getContext())
- .withTopLevelIterators(new ArrayList<>()).withScope(IteratorScope.scan)
- .withTableId(tablet.getExtent().tableId())
+
.withScope(IteratorScope.scan).withTableId(tablet.getExtent().tableId())
.withAuthorizations(scanParams.getAuthorizations());
if (samplerConfig != null) {
builder.withSamplingEnabled();
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Scanner.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Scanner.java
index 37c1160ebf..d382fbd171 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Scanner.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Scanner.java
@@ -19,7 +19,7 @@
package org.apache.accumulo.tserver.tablet;
import java.io.IOException;
-import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantLock;
@@ -143,7 +143,7 @@ public class Scanner {
if (results.getResults() == null) {
range = null;
- return new Pair<>(new ScanBatch(new ArrayList<>(), false), dataSource);
+ return new Pair<>(new ScanBatch(List.of(), false), dataSource);
} else if (results.getContinueKey() == null) {
return new Pair<>(new ScanBatch(results.getResults(), false),
dataSource);
} else {
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index 32d21c1db5..54877265cc 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@ -1827,7 +1827,7 @@ public class Tablet extends TabletBase {
public void importMapFiles(long tid, Map<TabletFile,MapFileInfo> fileMap,
boolean setTime)
throws IOException {
Map<TabletFile,DataFileValue> entries = new HashMap<>(fileMap.size());
- List<String> files = new ArrayList<>();
+ List<String> files = new ArrayList<>(fileMap.size());
for (Entry<TabletFile,MapFileInfo> entry : fileMap.entrySet()) {
entries.put(entry.getKey(), new
DataFileValue(entry.getValue().estimatedSize, 0L));
@@ -1899,7 +1899,8 @@ public class Tablet extends TabletBase {
synchronized (this) {
// only mark the bulk import a success if no exception was thrown
- bulkImported.computeIfAbsent(tid, k -> new
ArrayList<>()).addAll(fileMap.keySet());
+ bulkImported.computeIfAbsent(tid, k -> new ArrayList<>(fileMap.size()))
+ .addAll(fileMap.keySet());
}
if (isSplitPossible()) {
@@ -2004,8 +2005,8 @@ public class Tablet extends TabletBase {
Preconditions.checkState(logLock.isHeldByCurrentThread());
Set<String> unusedLogs = new HashSet<>();
- ArrayList<String> otherLogsCopy = new ArrayList<>();
- ArrayList<String> currentLogsCopy = new ArrayList<>();
+ ArrayList<String> otherLogsCopy = new ArrayList<>(otherLogs.size());
+ ArrayList<String> currentLogsCopy = new ArrayList<>(currentLogs.size());
synchronized (this) {
if (removingLogs) {