Skip to content

Commit 4d853fb

Browse files
Oleg Smirnovhenningandersen
authored andcommitted
Prevent unnecessary boxing, improve code clarity. (#76808)
Use BooleanSupplier, OptionalInt, Consumer and Predicate in places where more generic types were used.
1 parent 0eff425 commit 4d853fb

File tree

17 files changed

+67
-67
lines changed

17 files changed

+67
-67
lines changed

server/src/main/java/org/elasticsearch/cluster/node/DiscoveryNodes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import java.util.Map;
3333
import java.util.Objects;
3434
import java.util.Set;
35-
import java.util.function.Function;
35+
import java.util.function.Consumer;
3636
import java.util.function.Predicate;
3737
import java.util.stream.Collectors;
3838
import java.util.stream.Stream;
@@ -391,15 +391,15 @@ public String[] resolveNodes(String... nodes) {
391391
// the role is not a data role, we require an exact match (e.g., ingest)
392392
predicate = s -> s.contains(role);
393393
}
394-
final Function<String, Boolean> mutation;
394+
final Consumer<String> mutation;
395395
if (Booleans.parseBoolean(matchAttrValue, true)) {
396396
mutation = resolvedNodesIds::add;
397397
} else {
398398
mutation = resolvedNodesIds::remove;
399399
}
400400
for (final DiscoveryNode node : this) {
401401
if (predicate.test(node.getRoles())) {
402-
mutation.apply(node.getId());
402+
mutation.accept(node.getId());
403403
}
404404
}
405405
} else if(DiscoveryNode.COORDINATING_ONLY.equals(matchAttrName)) {

server/src/main/java/org/elasticsearch/indices/recovery/SnapshotFilesProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import java.io.IOException;
2323
import java.io.InputStream;
2424
import java.util.Objects;
25-
import java.util.function.Consumer;
25+
import java.util.function.LongConsumer;
2626

2727
public class SnapshotFilesProvider {
2828
private final RepositoriesService repositoriesService;
@@ -35,7 +35,7 @@ public InputStream getInputStreamForSnapshotFile(String repositoryName,
3535
IndexId indexId,
3636
ShardId shardId,
3737
BlobStoreIndexShardSnapshot.FileInfo fileInfo,
38-
Consumer<Long> rateLimiterListener) {
38+
LongConsumer rateLimiterListener) {
3939
BlobStoreRepository blobStoreRepository = (BlobStoreRepository) repositoriesService.repository(repositoryName);
4040
StoreFileMetadata storeFileMetadata = fileInfo.metadata();
4141
final InputStream inputStream;

server/src/test/java/org/elasticsearch/indices/recovery/PeerRecoveryTargetServiceTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
import java.util.concurrent.BlockingQueue;
6363
import java.util.concurrent.CyclicBarrier;
6464
import java.util.concurrent.ExecutionException;
65-
import java.util.function.Consumer;
65+
import java.util.function.LongConsumer;
6666
import java.util.stream.Collectors;
6767
import java.util.stream.LongStream;
6868

@@ -362,7 +362,7 @@ public InputStream getInputStreamForSnapshotFile(String requestedRepositoryName,
362362
IndexId requestedIndexId,
363363
ShardId requestedShardId,
364364
BlobStoreIndexShardSnapshot.FileInfo snapshotFileInfo,
365-
Consumer<Long> rateLimiterListener) {
365+
LongConsumer rateLimiterListener) {
366366
assertThat(requestedRepositoryName, equalTo(repositoryName));
367367
assertThat(requestedIndexId, equalTo(indexId));
368368
assertThat(requestedShardId, equalTo(shardId));
@@ -441,7 +441,7 @@ public InputStream getInputStreamForSnapshotFile(String requestedRepositoryName,
441441
IndexId requestedIndexId,
442442
ShardId requestedShardId,
443443
BlobStoreIndexShardSnapshot.FileInfo snapshotFileInfo,
444-
Consumer<Long> rateLimiterListener) {
444+
LongConsumer rateLimiterListener) {
445445
switch (downloadFileErrorType) {
446446
case CORRUPTED_FILE:
447447
byte[] fileDataCopy = new byte[fileData.length];
@@ -550,7 +550,7 @@ public InputStream getInputStreamForSnapshotFile(String requestedRepositoryName,
550550
IndexId requestedIndexId,
551551
ShardId requestedShardId,
552552
BlobStoreIndexShardSnapshot.FileInfo snapshotFileInfo,
553-
Consumer<Long> rateLimiterListener) {
553+
LongConsumer rateLimiterListener) {
554554
return new ByteArrayInputStream(fileData);
555555
}
556556

test/framework/src/main/java/org/elasticsearch/repositories/blobstore/AbstractBlobContainerRetriesTestCase.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import java.nio.file.NoSuchFileException;
3535
import java.util.Arrays;
3636
import java.util.Locale;
37-
import java.util.Optional;
37+
import java.util.OptionalInt;
3838
import java.util.concurrent.atomic.AtomicBoolean;
3939
import java.util.concurrent.atomic.AtomicLong;
4040
import java.util.regex.Matcher;
@@ -169,7 +169,7 @@ public void testReadRangeBlobWithRetries() throws Exception {
169169
final int rangeStart = getRangeStart(exchange);
170170
assertThat(rangeStart, lessThan(bytes.length));
171171
assertTrue(getRangeEnd(exchange).isPresent());
172-
final int rangeEnd = getRangeEnd(exchange).get();
172+
final int rangeEnd = getRangeEnd(exchange).getAsInt();
173173
assertThat(rangeEnd, greaterThanOrEqualTo(rangeStart));
174174
// adapt range end to be compliant to https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
175175
final int effectiveRangeEnd = Math.min(bytes.length - 1, rangeEnd);
@@ -325,22 +325,22 @@ protected static int getRangeStart(HttpExchange exchange) {
325325
return Math.toIntExact(getRange(exchange).v1());
326326
}
327327

328-
protected static Optional<Integer> getRangeEnd(HttpExchange exchange) {
328+
protected static OptionalInt getRangeEnd(HttpExchange exchange) {
329329
final long rangeEnd = getRange(exchange).v2();
330330
if (rangeEnd == MAX_RANGE_VAL) {
331-
return Optional.empty();
331+
return OptionalInt.empty();
332332
}
333-
return Optional.of(Math.toIntExact(rangeEnd));
333+
return OptionalInt.of(Math.toIntExact(rangeEnd));
334334
}
335335

336336
protected void sendIncompleteContent(HttpExchange exchange, byte[] bytes) throws IOException {
337337
final int rangeStart = getRangeStart(exchange);
338338
assertThat(rangeStart, lessThan(bytes.length));
339-
final Optional<Integer> rangeEnd = getRangeEnd(exchange);
339+
final OptionalInt rangeEnd = getRangeEnd(exchange);
340340
final int length;
341341
if (rangeEnd.isPresent()) {
342342
// adapt range end to be compliant to https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
343-
final int effectiveRangeEnd = Math.min(rangeEnd.get(), bytes.length - 1);
343+
final int effectiveRangeEnd = Math.min(rangeEnd.getAsInt(), bytes.length - 1);
344344
length = effectiveRangeEnd - rangeStart + 1;
345345
} else {
346346
length = bytes.length - rangeStart;

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteExpiredDataAction.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
import java.util.Arrays;
5050
import java.util.Iterator;
5151
import java.util.List;
52-
import java.util.function.Supplier;
52+
import java.util.function.BooleanSupplier;
5353
import java.util.stream.Collectors;
5454

5555
public class TransportDeleteExpiredDataAction extends HandledTransportAction<DeleteExpiredDataAction.Request,
@@ -101,7 +101,7 @@ protected void doExecute(Task task, DeleteExpiredDataAction.Request request,
101101

102102
TaskId taskId = new TaskId(clusterService.localNode().getId(), task.getId());
103103

104-
Supplier<Boolean> isTimedOutSupplier = () -> Instant.now(clock).isAfter(timeoutTime);
104+
BooleanSupplier isTimedOutSupplier = () -> Instant.now(clock).isAfter(timeoutTime);
105105
AnomalyDetectionAuditor auditor = new AnomalyDetectionAuditor(client, clusterService);
106106

107107
if (Strings.isNullOrEmpty(request.getJobId()) || Strings.isAllOrWildcard(request.getJobId())) {
@@ -129,7 +129,7 @@ protected void doExecute(Task task, DeleteExpiredDataAction.Request request,
129129
private void deleteExpiredData(DeleteExpiredDataAction.Request request,
130130
List<MlDataRemover> dataRemovers,
131131
ActionListener<DeleteExpiredDataAction.Response> listener,
132-
Supplier<Boolean> isTimedOutSupplier) {
132+
BooleanSupplier isTimedOutSupplier) {
133133
Iterator<MlDataRemover> dataRemoversIterator = new VolatileCursorIterator<>(dataRemovers);
134134
// If there is no throttle provided, default to none
135135
float requestsPerSec = request.getRequestsPerSecond() == null ? Float.POSITIVE_INFINITY : request.getRequestsPerSecond();
@@ -149,7 +149,7 @@ void deleteExpiredData(DeleteExpiredDataAction.Request request,
149149
Iterator<MlDataRemover> mlDataRemoversIterator,
150150
float requestsPerSecond,
151151
ActionListener<DeleteExpiredDataAction.Response> listener,
152-
Supplier<Boolean> isTimedOutSupplier,
152+
BooleanSupplier isTimedOutSupplier,
153153
boolean haveAllPreviousDeletionsCompleted) {
154154
if (haveAllPreviousDeletionsCompleted && mlDataRemoversIterator.hasNext()) {
155155
MlDataRemover remover = mlDataRemoversIterator.next();
@@ -175,7 +175,7 @@ void deleteExpiredData(DeleteExpiredDataAction.Request request,
175175
if (haveAllPreviousDeletionsCompleted) {
176176
logger.info("Completed deletion of expired ML data");
177177
} else {
178-
if (isTimedOutSupplier.get()) {
178+
if (isTimedOutSupplier.getAsBoolean()) {
179179
TimeValue timeoutPeriod = request.getTimeout() == null ? MlDataRemover.DEFAULT_MAX_DURATION :
180180
request.getTimeout();
181181
String msg = "Deleting expired ML data was cancelled after the timeout period of [" +

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/autoscaling/MlAutoscalingDeciderService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
import java.util.OptionalLong;
5656
import java.util.PriorityQueue;
5757
import java.util.function.Function;
58-
import java.util.function.Supplier;
58+
import java.util.function.LongSupplier;
5959
import java.util.stream.Collectors;
6060
import java.util.stream.Stream;
6161

@@ -82,7 +82,7 @@ public class MlAutoscalingDeciderService implements AutoscalingDeciderService,
8282

8383
private final NodeLoadDetector nodeLoadDetector;
8484
private final MlMemoryTracker mlMemoryTracker;
85-
private final Supplier<Long> timeSupplier;
85+
private final LongSupplier timeSupplier;
8686

8787
private volatile boolean isMaster;
8888
private volatile boolean running;
@@ -99,7 +99,7 @@ public MlAutoscalingDeciderService(MlMemoryTracker memoryTracker, Settings setti
9999
MlAutoscalingDeciderService(NodeLoadDetector nodeLoadDetector,
100100
Settings settings,
101101
ClusterService clusterService,
102-
Supplier<Long> timeSupplier) {
102+
LongSupplier timeSupplier) {
103103
this.nodeLoadDetector = nodeLoadDetector;
104104
this.mlMemoryTracker = nodeLoadDetector.getMlMemoryTracker();
105105
this.maxMachineMemoryPercent = MachineLearning.MAX_MACHINE_MEMORY_PERCENT.get(settings);
@@ -336,7 +336,7 @@ public AutoscalingDeciderResult scale(Settings configuration, AutoscalingDecider
336336
}
337337
final Duration memoryTrackingStale;
338338
long previousTimeStamp = this.lastTimeToScale;
339-
this.lastTimeToScale = this.timeSupplier.get();
339+
this.lastTimeToScale = this.timeSupplier.getAsLong();
340340
if (previousTimeStamp == 0L) {
341341
memoryTrackingStale = DEFAULT_MEMORY_REFRESH_RATE;
342342
} else {
@@ -906,7 +906,7 @@ Optional<AutoscalingDeciderResult> checkForScaleDown(List<NodeLoad> nodeLoads,
906906
}
907907

908908
private long msLeftToDownScale(Settings configuration) {
909-
final long now = timeSupplier.get();
909+
final long now = timeSupplier.getAsLong();
910910
if (newScaleDownCheck()) {
911911
scaleDownDetected = now;
912912
}

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/datafeed/DatafeedRunner.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
import java.util.concurrent.TimeUnit;
5050
import java.util.concurrent.locks.ReentrantLock;
5151
import java.util.function.Consumer;
52-
import java.util.function.Supplier;
52+
import java.util.function.LongSupplier;
5353

5454
import static org.elasticsearch.persistent.PersistentTasksService.WaitForPersistentTaskListener;
5555
import static org.elasticsearch.xpack.core.ClientHelper.ML_ORIGIN;
@@ -62,7 +62,7 @@ public class DatafeedRunner {
6262
private final Client client;
6363
private final ClusterService clusterService;
6464
private final ThreadPool threadPool;
65-
private final Supplier<Long> currentTimeSupplier;
65+
private final LongSupplier currentTimeSupplier;
6666
private final AnomalyDetectionAuditor auditor;
6767
// Use allocationId as key instead of datafeed id
6868
private final ConcurrentMap<Long, Holder> runningDatafeedsOnThisNode = new ConcurrentHashMap<>();
@@ -72,7 +72,7 @@ public class DatafeedRunner {
7272
private final DatafeedContextProvider datafeedContextProvider;
7373

7474
public DatafeedRunner(ThreadPool threadPool, Client client, ClusterService clusterService, DatafeedJobBuilder datafeedJobBuilder,
75-
Supplier<Long> currentTimeSupplier, AnomalyDetectionAuditor auditor,
75+
LongSupplier currentTimeSupplier, AnomalyDetectionAuditor auditor,
7676
AutodetectProcessManager autodetectProcessManager, DatafeedContextProvider datafeedContextProvider) {
7777
this.client = Objects.requireNonNull(client);
7878
this.clusterService = Objects.requireNonNull(clusterService);
@@ -346,7 +346,7 @@ private boolean jobHasOpenAutodetectCommunicator(PersistentTasksCustomMetadata t
346346
}
347347

348348
private TimeValue computeNextDelay(long next) {
349-
return new TimeValue(Math.max(1, next - currentTimeSupplier.get()));
349+
return new TimeValue(Math.max(1, next - currentTimeSupplier.getAsLong()));
350350
}
351351

352352
/**

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/retention/AbstractExpiredJobDataRemover.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import java.util.Iterator;
1515
import java.util.Objects;
16-
import java.util.function.Supplier;
16+
import java.util.function.BooleanSupplier;
1717

1818
/**
1919
* Removes job data that expired with respect to their retention period.
@@ -41,14 +41,14 @@ protected TaskId getParentTaskId() {
4141
@Override
4242
public void remove(float requestsPerSecond,
4343
ActionListener<Boolean> listener,
44-
Supplier<Boolean> isTimedOutSupplier) {
44+
BooleanSupplier isTimedOutSupplier) {
4545
removeData(jobIterator, requestsPerSecond, listener, isTimedOutSupplier);
4646
}
4747

4848
private void removeData(Iterator<Job> jobIterator,
4949
float requestsPerSecond,
5050
ActionListener<Boolean> listener,
51-
Supplier<Boolean> isTimedOutSupplier) {
51+
BooleanSupplier isTimedOutSupplier) {
5252
if (jobIterator.hasNext() == false) {
5353
listener.onResponse(true);
5454
return;
@@ -60,7 +60,7 @@ private void removeData(Iterator<Job> jobIterator,
6060
return;
6161
}
6262

63-
if (isTimedOutSupplier.get()) {
63+
if (isTimedOutSupplier.getAsBoolean()) {
6464
listener.onResponse(false);
6565
return;
6666
}

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/retention/EmptyStateIndexRemover.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.Arrays;
2020
import java.util.Objects;
2121
import java.util.Set;
22-
import java.util.function.Supplier;
22+
import java.util.function.BooleanSupplier;
2323

2424
import static java.util.stream.Collectors.toSet;
2525

@@ -37,9 +37,9 @@ public EmptyStateIndexRemover(OriginSettingClient client, TaskId parentTaskId) {
3737
}
3838

3939
@Override
40-
public void remove(float requestsPerSec, ActionListener<Boolean> listener, Supplier<Boolean> isTimedOutSupplier) {
40+
public void remove(float requestsPerSec, ActionListener<Boolean> listener, BooleanSupplier isTimedOutSupplier) {
4141
try {
42-
if (isTimedOutSupplier.get()) {
42+
if (isTimedOutSupplier.getAsBoolean()) {
4343
listener.onResponse(false);
4444
return;
4545
}

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/job/retention/ExpiredForecastsRemover.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import java.util.ArrayList;
4242
import java.util.List;
4343
import java.util.Objects;
44-
import java.util.function.Supplier;
44+
import java.util.function.BooleanSupplier;
4545

4646
/**
4747
* Removes up to {@link #MAX_FORECASTS} forecasts (stats + forecasts docs) that have expired.
@@ -71,7 +71,7 @@ public ExpiredForecastsRemover(OriginSettingClient client, ThreadPool threadPool
7171
}
7272

7373
@Override
74-
public void remove(float requestsPerSec, ActionListener<Boolean> listener, Supplier<Boolean> isTimedOutSupplier) {
74+
public void remove(float requestsPerSec, ActionListener<Boolean> listener, BooleanSupplier isTimedOutSupplier) {
7575
LOGGER.debug("Removing forecasts that expire before [{}]", cutoffEpochMs);
7676
ActionListener<SearchResponse> forecastStatsHandler = ActionListener.wrap(
7777
searchResponse -> deleteForecasts(searchResponse, requestsPerSec, listener, isTimedOutSupplier),
@@ -103,15 +103,15 @@ private void deleteForecasts(
103103
SearchResponse searchResponse,
104104
float requestsPerSec,
105105
ActionListener<Boolean> listener,
106-
Supplier<Boolean> isTimedOutSupplier
106+
BooleanSupplier isTimedOutSupplier
107107
) {
108108
List<JobForecastId> forecastsToDelete = findForecastsToDelete(searchResponse);
109109
if (forecastsToDelete.isEmpty()) {
110110
listener.onResponse(true);
111111
return;
112112
}
113113

114-
if (isTimedOutSupplier.get()) {
114+
if (isTimedOutSupplier.getAsBoolean()) {
115115
listener.onResponse(false);
116116
return;
117117
}

0 commit comments

Comments
 (0)