Skip to content

Commit e1a7fa6

Browse files
author
Gagan Singh Saini
committed
Resolve comments
Signed-off-by: Gagan Singh Saini <[email protected]>
1 parent 3570c0d commit e1a7fa6

File tree

2 files changed

+52
-24
lines changed

2 files changed

+52
-24
lines changed

server/src/main/java/org/opensearch/cluster/routing/allocation/DiskThresholdMonitor.java

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ public class DiskThresholdMonitor {
8989
private final Supplier<Double> dataToFileCacheSizeRatioSupplier;
9090
private final LongSupplier currentTimeMillisSupplier;
9191
private final RerouteService rerouteService;
92-
private final HotNodeDiskThresholdEvaluator hotNodeEvaluator;
93-
private final WarmNodeDiskThresholdEvaluator warmNodeEvaluator;
92+
private final NodeDiskEvaluator nodeDiskEvaluator;
9493
private final AtomicLong lastRunTimeMillis = new AtomicLong(Long.MIN_VALUE);
9594
private final AtomicBoolean checkInProgress = new AtomicBoolean();
9695

@@ -126,8 +125,12 @@ public DiskThresholdMonitor(
126125
this.rerouteService = rerouteService;
127126
this.diskThresholdSettings = new DiskThresholdSettings(settings, clusterSettings);
128127
this.client = client;
129-
this.hotNodeEvaluator = new HotNodeDiskThresholdEvaluator(diskThresholdSettings);
130-
this.warmNodeEvaluator = new WarmNodeDiskThresholdEvaluator(diskThresholdSettings, dataToFileCacheSizeRatioSupplier);
128+
DiskThresholdEvaluator hotNodeEvaluator = new HotNodeDiskThresholdEvaluator(diskThresholdSettings);
129+
DiskThresholdEvaluator warmNodeEvaluator = new WarmNodeDiskThresholdEvaluator(
130+
diskThresholdSettings,
131+
dataToFileCacheSizeRatioSupplier
132+
);
133+
this.nodeDiskEvaluator = new NodeDiskEvaluator(hotNodeEvaluator, warmNodeEvaluator);
131134
this.dataToFileCacheSizeRatioSupplier = dataToFileCacheSizeRatioSupplier;
132135
}
133136

@@ -187,7 +190,7 @@ public void onNewInfo(ClusterInfo info) {
187190
usage = getWarmDiskUsage(usage, info, routingNode, state);
188191
}
189192

190-
if (isNodeExceedingFloodStageWatermark(usage, isWarmNode)) {
193+
if (nodeDiskEvaluator.isNodeExceedingFloodStageWatermark(usage, isWarmNode)) {
191194

192195
nodesOverLowThreshold.add(node);
193196
nodesOverHighThreshold.add(node);
@@ -210,7 +213,7 @@ public void onNewInfo(ClusterInfo info) {
210213
continue;
211214
}
212215

213-
if (isNodeExceedingHighWatermark(usage, isWarmNode)) {
216+
if (nodeDiskEvaluator.isNodeExceedingHighWatermark(usage, isWarmNode)) {
214217

215218
if (routingNode != null) { // might be temporarily null if the ClusterInfoService and the ClusterService are out of step
216219
for (ShardRouting routing : routingNode) {
@@ -229,7 +232,7 @@ public void onNewInfo(ClusterInfo info) {
229232
Math.max(0L, usage.getFreeBytes() - reservedSpace)
230233
);
231234

232-
if (isNodeExceedingHighWatermark(usageWithReservedSpace, isWarmNode)) {
235+
if (nodeDiskEvaluator.isNodeExceedingHighWatermark(usageWithReservedSpace, isWarmNode)) {
233236

234237
nodesOverLowThreshold.add(node);
235238
nodesOverHighThreshold.add(node);
@@ -247,7 +250,7 @@ public void onNewInfo(ClusterInfo info) {
247250
);
248251
}
249252

250-
} else if (isNodeExceedingLowWatermark(usage, isWarmNode)) {
253+
} else if (nodeDiskEvaluator.isNodeExceedingLowWatermark(usage, isWarmNode)) {
251254

252255
nodesOverHighThresholdAndRelocating.remove(node);
253256

@@ -328,7 +331,7 @@ public void onNewInfo(ClusterInfo info) {
328331
}
329332

330333
boolean isNodeWarm = REMOTE_CAPABLE.equals(getNodePool(routingNode));
331-
if (isNodeExceedingHighWatermark(usageIncludingRelocations, isNodeWarm)) {
334+
if (nodeDiskEvaluator.isNodeExceedingHighWatermark(usageIncludingRelocations, isNodeWarm)) {
332335

333336
nodesOverHighThresholdAndRelocating.remove(diskUsage.getNodeId());
334337
logger.warn(
@@ -431,21 +434,6 @@ long sizeOfRelocatingShards(RoutingNode routingNode, DiskUsage diskUsage, Cluste
431434
);
432435
}
433436

434-
private boolean isNodeExceedingFloodStageWatermark(DiskUsage diskUsage, boolean isWarmNode) {
435-
DiskThresholdEvaluator evaluator = isWarmNode ? warmNodeEvaluator : hotNodeEvaluator;
436-
return evaluator.isNodeExceedingFloodStageWatermark(diskUsage);
437-
}
438-
439-
private boolean isNodeExceedingHighWatermark(DiskUsage diskUsage, boolean isWarmNode) {
440-
DiskThresholdEvaluator evaluator = isWarmNode ? warmNodeEvaluator : hotNodeEvaluator;
441-
return evaluator.isNodeExceedingHighWatermark(diskUsage);
442-
}
443-
444-
private boolean isNodeExceedingLowWatermark(DiskUsage diskUsage, boolean isWarmNode) {
445-
DiskThresholdEvaluator evaluator = isWarmNode ? warmNodeEvaluator : hotNodeEvaluator;
446-
return evaluator.isNodeExceedingLowWatermark(diskUsage);
447-
}
448-
449437
private DiskUsage getWarmDiskUsage(DiskUsage diskUsage, ClusterInfo info, RoutingNode node, ClusterState state) {
450438
double dataToFileCacheSizeRatio = dataToFileCacheSizeRatioSupplier.get();
451439
AggregateFileCacheStats fileCacheStats = info.getNodeFileCacheStats().getOrDefault(diskUsage.getNodeId(), null);
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*/
8+
9+
package org.opensearch.cluster.routing.allocation;
10+
11+
import org.opensearch.cluster.DiskUsage;
12+
13+
public class NodeDiskEvaluator {
14+
15+
private final DiskThresholdEvaluator hotNodeEvaluator;
16+
private final DiskThresholdEvaluator warmNodeEvaluator;
17+
18+
public NodeDiskEvaluator(DiskThresholdEvaluator hotEvaluator, DiskThresholdEvaluator warmEvaluator) {
19+
this.hotNodeEvaluator = hotEvaluator;
20+
this.warmNodeEvaluator = warmEvaluator;
21+
}
22+
23+
public boolean isNodeExceedingFloodStageWatermark(DiskUsage diskUsage, boolean isWarmNode) {
24+
return isWarmNode
25+
? warmNodeEvaluator.isNodeExceedingFloodStageWatermark(diskUsage)
26+
: hotNodeEvaluator.isNodeExceedingFloodStageWatermark(diskUsage);
27+
}
28+
29+
public boolean isNodeExceedingHighWatermark(DiskUsage diskUsage, boolean isWarmNode) {
30+
return isWarmNode
31+
? warmNodeEvaluator.isNodeExceedingHighWatermark(diskUsage)
32+
: hotNodeEvaluator.isNodeExceedingHighWatermark(diskUsage);
33+
}
34+
35+
public boolean isNodeExceedingLowWatermark(DiskUsage diskUsage, boolean isWarmNode) {
36+
return isWarmNode
37+
? warmNodeEvaluator.isNodeExceedingLowWatermark(diskUsage)
38+
: hotNodeEvaluator.isNodeExceedingLowWatermark(diskUsage);
39+
}
40+
}

0 commit comments

Comments
 (0)