Skip to content

Commit 81095dd

Browse files
Create a Builder for ClusterInfo (elastic#131057)
1 parent 29ccfb8 commit 81095dd

File tree

16 files changed

+154
-119
lines changed

16 files changed

+154
-119
lines changed

server/src/main/java/org/elasticsearch/cluster/ClusterInfo.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,4 +452,72 @@ public Builder add(ShardId shardId, long reservedBytes) {
452452
}
453453
}
454454
}
455+
456+
public static Builder builder() {
457+
return new Builder();
458+
}
459+
460+
public static class Builder {
461+
private Map<String, DiskUsage> leastAvailableSpaceUsage = Map.of();
462+
private Map<String, DiskUsage> mostAvailableSpaceUsage = Map.of();
463+
private Map<String, Long> shardSizes = Map.of();
464+
private Map<ShardId, Long> shardDataSetSizes = Map.of();
465+
private Map<NodeAndShard, String> dataPath = Map.of();
466+
private Map<NodeAndPath, ReservedSpace> reservedSpace = Map.of();
467+
private Map<String, EstimatedHeapUsage> estimatedHeapUsages = Map.of();
468+
private Map<String, NodeUsageStatsForThreadPools> nodeUsageStatsForThreadPools = Map.of();
469+
470+
public ClusterInfo build() {
471+
return new ClusterInfo(
472+
leastAvailableSpaceUsage,
473+
mostAvailableSpaceUsage,
474+
shardSizes,
475+
shardDataSetSizes,
476+
dataPath,
477+
reservedSpace,
478+
estimatedHeapUsages,
479+
nodeUsageStatsForThreadPools
480+
);
481+
}
482+
483+
public Builder leastAvailableSpaceUsage(Map<String, DiskUsage> leastAvailableSpaceUsage) {
484+
this.leastAvailableSpaceUsage = leastAvailableSpaceUsage;
485+
return this;
486+
}
487+
488+
public Builder mostAvailableSpaceUsage(Map<String, DiskUsage> mostAvailableSpaceUsage) {
489+
this.mostAvailableSpaceUsage = mostAvailableSpaceUsage;
490+
return this;
491+
}
492+
493+
public Builder shardSizes(Map<String, Long> shardSizes) {
494+
this.shardSizes = shardSizes;
495+
return this;
496+
}
497+
498+
public Builder shardDataSetSizes(Map<ShardId, Long> shardDataSetSizes) {
499+
this.shardDataSetSizes = shardDataSetSizes;
500+
return this;
501+
}
502+
503+
public Builder dataPath(Map<NodeAndShard, String> dataPath) {
504+
this.dataPath = dataPath;
505+
return this;
506+
}
507+
508+
public Builder reservedSpace(Map<NodeAndPath, ReservedSpace> reservedSpace) {
509+
this.reservedSpace = reservedSpace;
510+
return this;
511+
}
512+
513+
public Builder estimatedHeapUsages(Map<String, EstimatedHeapUsage> estimatedHeapUsages) {
514+
this.estimatedHeapUsages = estimatedHeapUsages;
515+
return this;
516+
}
517+
518+
public Builder nodeUsageStatsForThreadPools(Map<String, NodeUsageStatsForThreadPools> nodeUsageStatsForThreadPools) {
519+
this.nodeUsageStatsForThreadPools = nodeUsageStatsForThreadPools;
520+
return this;
521+
}
522+
}
455523
}

server/src/test/java/org/elasticsearch/cluster/routing/ExpectedShardSizeEstimatorTests.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -199,16 +199,7 @@ private static Metadata metadata(IndexMetadata.Builder... indices) {
199199
}
200200

201201
private static ClusterInfo createClusterInfo(ShardRouting shard, Long size) {
202-
return new ClusterInfo(
203-
Map.of(),
204-
Map.of(),
205-
Map.of(ClusterInfo.shardIdentifierFromRouting(shard), size),
206-
Map.of(),
207-
Map.of(),
208-
Map.of(),
209-
Map.of(),
210-
Map.of()
211-
);
202+
return ClusterInfo.builder().shardSizes(Map.of(ClusterInfo.shardIdentifierFromRouting(shard), size)).build();
212203
}
213204

214205
private ClusterState buildRoutingTable(ClusterState state) {

server/src/test/java/org/elasticsearch/cluster/routing/allocation/AllocationStatsServiceTests.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,16 +72,9 @@ public void testShardStats() {
7272
)
7373
.build();
7474

75-
var clusterInfo = new ClusterInfo(
76-
Map.of(),
77-
Map.of(),
78-
Map.of(ClusterInfo.shardIdentifierFromRouting(shardId, true), currentShardSize),
79-
Map.of(),
80-
Map.of(),
81-
Map.of(),
82-
Map.of(),
83-
Map.of()
84-
);
75+
var clusterInfo = ClusterInfo.builder()
76+
.shardSizes(Map.of(ClusterInfo.shardIdentifierFromRouting(shardId, true), currentShardSize))
77+
.build();
8578

8679
var queue = new DeterministicTaskQueue();
8780
try (var clusterService = ClusterServiceUtils.createClusterService(state, queue.getThreadPool())) {

server/src/test/java/org/elasticsearch/cluster/routing/allocation/DiskThresholdMonitorTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1580,7 +1580,7 @@ private static ClusterInfo clusterInfo(
15801580
Map<String, DiskUsage> diskUsages,
15811581
Map<ClusterInfo.NodeAndPath, ClusterInfo.ReservedSpace> reservedSpace
15821582
) {
1583-
return new ClusterInfo(diskUsages, Map.of(), Map.of(), Map.of(), Map.of(), reservedSpace, Map.of(), Map.of());
1583+
return ClusterInfo.builder().leastAvailableSpaceUsage(diskUsages).reservedSpace(reservedSpace).build();
15841584
}
15851585

15861586
private static DiscoveryNode newFrozenOnlyNode(String nodeId) {

server/src/test/java/org/elasticsearch/cluster/routing/allocation/ExpectedShardSizeAllocationTests.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -249,22 +249,17 @@ public void testExpectedSizeOnMove() {
249249
}
250250

251251
private static ClusterInfo createClusterInfoWith(ShardId shardId, long size) {
252-
return new ClusterInfo(
253-
Map.of(),
254-
Map.of(),
255-
Map.ofEntries(
256-
Map.entry(ClusterInfo.shardIdentifierFromRouting(shardId, true), size),
257-
Map.entry(ClusterInfo.shardIdentifierFromRouting(shardId, false), size)
258-
),
259-
Map.of(),
260-
Map.of(),
261-
Map.of(),
262-
Map.of(),
263-
Map.of()
264-
);
252+
return ClusterInfo.builder()
253+
.shardSizes(
254+
Map.ofEntries(
255+
Map.entry(ClusterInfo.shardIdentifierFromRouting(shardId, true), size),
256+
Map.entry(ClusterInfo.shardIdentifierFromRouting(shardId, false), size)
257+
)
258+
)
259+
.build();
265260
}
266261

267262
private static ClusterInfo createClusterInfo(Map<String, DiskUsage> diskUsage, Map<String, Long> shardSizes) {
268-
return new ClusterInfo(diskUsage, diskUsage, shardSizes, Map.of(), Map.of(), Map.of(), Map.of(), Map.of());
263+
return ClusterInfo.builder().leastAvailableSpaceUsage(diskUsage).mostAvailableSpaceUsage(diskUsage).shardSizes(shardSizes).build();
269264
}
270265
}

server/src/test/java/org/elasticsearch/cluster/routing/allocation/allocator/BalancedShardsAllocatorTests.java

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -597,21 +597,16 @@ public void testShardSizeDiscrepancyWithinIndex() {
597597

598598
var allocationService = createAllocationService(
599599
Settings.EMPTY,
600-
() -> new ClusterInfo(
601-
Map.of(),
602-
Map.of(),
603-
Map.of(
604-
ClusterInfo.shardIdentifierFromRouting(new ShardId(index, 0), true),
605-
0L,
606-
ClusterInfo.shardIdentifierFromRouting(new ShardId(index, 1), true),
607-
ByteSizeUnit.GB.toBytes(500)
608-
),
609-
Map.of(),
610-
Map.of(),
611-
Map.of(),
612-
Map.of(),
613-
Map.of()
614-
)
600+
() -> ClusterInfo.builder()
601+
.shardSizes(
602+
Map.of(
603+
ClusterInfo.shardIdentifierFromRouting(new ShardId(index, 0), true),
604+
0L,
605+
ClusterInfo.shardIdentifierFromRouting(new ShardId(index, 1), true),
606+
ByteSizeUnit.GB.toBytes(500)
607+
)
608+
)
609+
.build()
615610
);
616611

617612
assertSame(clusterState, reroute(allocationService, clusterState));
@@ -706,7 +701,7 @@ private RoutingAllocation createRoutingAllocation(ClusterState clusterState) {
706701
}
707702

708703
private static ClusterInfo createClusterInfo(Map<String, Long> indexSizes) {
709-
return new ClusterInfo(Map.of(), Map.of(), indexSizes, Map.of(), Map.of(), Map.of(), Map.of(), Map.of());
704+
return ClusterInfo.builder().shardSizes(indexSizes).build();
710705
}
711706

712707
private static IndexMetadata.Builder anIndex(String name) {

server/src/test/java/org/elasticsearch/cluster/routing/allocation/allocator/ClusterAllocationSimulationTests.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,12 @@ public ClusterInfo getClusterInfo() {
561561
dataPath.put(new ClusterInfo.NodeAndShard(shardRouting.currentNodeId(), shardRouting.shardId()), "/data");
562562
}
563563

564-
return new ClusterInfo(diskSpaceUsage, diskSpaceUsage, shardSizes, Map.of(), dataPath, Map.of(), Map.of(), Map.of());
564+
return ClusterInfo.builder()
565+
.leastAvailableSpaceUsage(diskSpaceUsage)
566+
.mostAvailableSpaceUsage(diskSpaceUsage)
567+
.shardSizes(shardSizes)
568+
.dataPath(dataPath)
569+
.build();
565570
}
566571

567572
}

server/src/test/java/org/elasticsearch/cluster/routing/allocation/allocator/ClusterBalanceStatsTests.java

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -329,26 +329,21 @@ private static Tuple<IndexMetadata.Builder, String[]> startedIndex(
329329
}
330330

331331
private ClusterInfo createClusterInfo(List<Tuple<String, long[]>> shardSizes) {
332-
return new ClusterInfo(
333-
Map.of(),
334-
Map.of(),
335-
shardSizes.stream()
336-
.flatMap(
337-
entry -> IntStream.range(0, entry.v2().length)
338-
.mapToObj(
339-
index -> Map.entry(
340-
ClusterInfo.shardIdentifierFromRouting(new ShardId(entry.v1(), "_na_", index), true),
341-
entry.v2()[index]
332+
return ClusterInfo.builder()
333+
.shardSizes(
334+
shardSizes.stream()
335+
.flatMap(
336+
entry -> IntStream.range(0, entry.v2().length)
337+
.mapToObj(
338+
index -> Map.entry(
339+
ClusterInfo.shardIdentifierFromRouting(new ShardId(entry.v1(), "_na_", index), true),
340+
entry.v2()[index]
341+
)
342342
)
343-
)
344-
)
345-
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)),
346-
Map.of(),
347-
Map.of(),
348-
Map.of(),
349-
Map.of(),
350-
Map.of()
351-
);
343+
)
344+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))
345+
)
346+
.build();
352347
}
353348

354349
private static Tuple<String, long[]> indexSizes(String name, long... sizes) {

server/src/test/java/org/elasticsearch/cluster/routing/allocation/allocator/ClusterInfoSimulatorTests.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -690,16 +690,12 @@ public ClusterInfoTestBuilder withReservedSpace(String nodeId, String path, long
690690
}
691691

692692
public ClusterInfo build() {
693-
return new ClusterInfo(
694-
leastAvailableSpaceUsage,
695-
mostAvailableSpaceUsage,
696-
shardSizes,
697-
Map.of(),
698-
Map.of(),
699-
reservedSpace,
700-
Map.of(),
701-
Map.of()
702-
);
693+
return ClusterInfo.builder()
694+
.leastAvailableSpaceUsage(leastAvailableSpaceUsage)
695+
.mostAvailableSpaceUsage(mostAvailableSpaceUsage)
696+
.shardSizes(shardSizes)
697+
.reservedSpace(reservedSpace)
698+
.build();
703699
}
704700
}
705701

server/src/test/java/org/elasticsearch/cluster/routing/allocation/allocator/DesiredBalanceComputerTests.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,12 @@ public void testDesiredBalanceShouldConvergeInABigCluster() {
690690
.stream()
691691
.collect(toMap(Map.Entry::getKey, it -> new DiskUsage(it.getKey(), it.getKey(), "/data", diskSize, diskSize - it.getValue())));
692692

693-
var clusterInfo = new ClusterInfo(diskUsage, diskUsage, shardSizes, Map.of(), dataPath, Map.of(), Map.of(), Map.of());
693+
var clusterInfo = ClusterInfo.builder()
694+
.leastAvailableSpaceUsage(diskUsage)
695+
.mostAvailableSpaceUsage(diskUsage)
696+
.shardSizes(shardSizes)
697+
.dataPath(dataPath)
698+
.build();
694699

695700
var settings = Settings.EMPTY;
696701

@@ -1196,7 +1201,12 @@ public ClusterInfoTestBuilder withReservedSpace(String nodeId, long size, ShardI
11961201
}
11971202

11981203
public ClusterInfo build() {
1199-
return new ClusterInfo(diskUsage, diskUsage, shardSizes, Map.of(), Map.of(), reservedSpace, Map.of(), Map.of());
1204+
return ClusterInfo.builder()
1205+
.leastAvailableSpaceUsage(diskUsage)
1206+
.mostAvailableSpaceUsage(diskUsage)
1207+
.shardSizes(shardSizes)
1208+
.reservedSpace(reservedSpace)
1209+
.build();
12001210
}
12011211
}
12021212

0 commit comments

Comments
 (0)