diff --git a/server/src/internalClusterTest/java/org/opensearch/action/bulk/AppendOnlyIndicesIT.java b/server/src/internalClusterTest/java/org/opensearch/action/bulk/AppendOnlyIndicesIT.java index ee5602efac856..8aab719a198ef 100644 --- a/server/src/internalClusterTest/java/org/opensearch/action/bulk/AppendOnlyIndicesIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/action/bulk/AppendOnlyIndicesIT.java @@ -125,7 +125,7 @@ public void testRetryForAppendOnlyIndices() throws Exception { Client client = internalCluster().coordOnlyNodeClient(); NodesStatsResponse nodeStats = client().admin().cluster().prepareNodesStats().get(); NodeStats unluckyNode = randomFrom( - nodeStats.getNodes().stream().filter((s) -> s.getNode().isDataNode()).collect(Collectors.toList()) + nodeStats.getNodes().stream().filter((s) -> s.getNode().canContainData()).collect(Collectors.toList()) ); assertAcked( client().admin() diff --git a/server/src/internalClusterTest/java/org/opensearch/index/store/CorruptedFileIT.java b/server/src/internalClusterTest/java/org/opensearch/index/store/CorruptedFileIT.java index d11a141f83bb8..f0b48e79bfc4d 100644 --- a/server/src/internalClusterTest/java/org/opensearch/index/store/CorruptedFileIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/index/store/CorruptedFileIT.java @@ -366,7 +366,7 @@ public void testCorruptionOnNetworkLayerFinalizingRecovery() throws ExecutionExc NodesStatsResponse nodeStats = client().admin().cluster().prepareNodesStats().get(); List dataNodeStats = new ArrayList<>(); for (NodeStats stat : nodeStats.getNodes()) { - if (stat.getNode().isDataNode()) { + if (stat.getNode().canContainData()) { dataNodeStats.add(stat); } } @@ -433,7 +433,7 @@ public void testCorruptionOnNetworkLayer() throws ExecutionException, Interrupte NodesStatsResponse nodeStats = client().admin().cluster().prepareNodesStats().get(); List dataNodeStats = new ArrayList<>(); for (NodeStats stat : nodeStats.getNodes()) { - if (stat.getNode().isDataNode()) { + if (stat.getNode().canContainData()) { dataNodeStats.add(stat); } } @@ -698,7 +698,7 @@ public void testPrimaryCorruptionDuringReplicationDoesNotFailReplicaShard() thro final NodesStatsResponse nodeStats = client().admin().cluster().prepareNodesStats().get(); final List dataNodeStats = nodeStats.getNodes() .stream() - .filter(stat -> stat.getNode().isDataNode()) + .filter(stat -> stat.getNode().canContainData()) .collect(Collectors.toUnmodifiableList()); MatcherAssert.assertThat(dataNodeStats.size(), greaterThanOrEqualTo(2)); diff --git a/server/src/internalClusterTest/java/org/opensearch/index/store/ExceptionRetryIT.java b/server/src/internalClusterTest/java/org/opensearch/index/store/ExceptionRetryIT.java index 264206ca6577a..a8f8870122676 100644 --- a/server/src/internalClusterTest/java/org/opensearch/index/store/ExceptionRetryIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/index/store/ExceptionRetryIT.java @@ -95,7 +95,7 @@ public void testRetryDueToExceptionOnNetworkLayer() throws ExecutionException, I Client client = internalCluster().coordOnlyNodeClient(); NodesStatsResponse nodeStats = client().admin().cluster().prepareNodesStats().get(); NodeStats unluckyNode = randomFrom( - nodeStats.getNodes().stream().filter((s) -> s.getNode().isDataNode()).collect(Collectors.toList()) + nodeStats.getNodes().stream().filter((s) -> s.getNode().canContainData()).collect(Collectors.toList()) ); assertAcked( client().admin() diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/IndicesRequestCacheCleanupIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/IndicesRequestCacheCleanupIT.java index 5c6bd27839d23..06529ed1b8c6b 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/IndicesRequestCacheCleanupIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/IndicesRequestCacheCleanupIT.java @@ -723,7 +723,7 @@ private static RequestCacheStats getRequestCacheStats(Client client, String inde private static RequestCacheStats getNodeCacheStats(Client client) { NodesStatsResponse stats = client.admin().cluster().prepareNodesStats().execute().actionGet(); for (NodeStats stat : stats.getNodes()) { - if (stat.getNode().isDataNode()) { + if (stat.getNode().canContainData()) { return stat.getIndices().getRequestCache(); } } diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/IndicesRequestCacheIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/IndicesRequestCacheIT.java index dc72291e95184..6aedb53275bcb 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/IndicesRequestCacheIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/IndicesRequestCacheIT.java @@ -893,7 +893,7 @@ private static RequestCacheStats getRequestCacheStats(Client client, String inde private static RequestCacheStats getNodeCacheStats(Client client) { NodesStatsResponse stats = client.admin().cluster().prepareNodesStats().execute().actionGet(); for (NodeStats stat : stats.getNodes()) { - if (stat.getNode().isDataNode()) { + if (stat.getNode().canContainData()) { return stat.getIndices().getRequestCache(); } } diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/memory/breaker/CircuitBreakerServiceIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/memory/breaker/CircuitBreakerServiceIT.java index 441259c3ba41a..342852e9fbbe3 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/memory/breaker/CircuitBreakerServiceIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/memory/breaker/CircuitBreakerServiceIT.java @@ -398,7 +398,7 @@ public void testLimitsRequestSize() { NodesStatsResponse nodeStats = client().admin().cluster().prepareNodesStats().get(); List dataNodeStats = new ArrayList<>(); for (NodeStats stat : nodeStats.getNodes()) { - if (stat.getNode().isDataNode()) { + if (stat.getNode().canContainData()) { dataNodeStats.add(stat); } } diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/recovery/IndexRecoveryIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/recovery/IndexRecoveryIT.java index 9d893cb6f33c7..34587543a6e07 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/recovery/IndexRecoveryIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/recovery/IndexRecoveryIT.java @@ -580,7 +580,7 @@ public void testRerouteRecovery() throws Exception { .get(); List dataNodeStats = statsResponse1.getNodes() .stream() - .filter(nodeStats -> nodeStats.getNode().isDataNode()) + .filter(nodeStats -> nodeStats.getNode().canContainData()) .collect(Collectors.toList()); assertThat(dataNodeStats, hasSize(2)); for (NodeStats nodeStats : dataNodeStats) { diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/state/CloseWhileRelocatingShardsIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/state/CloseWhileRelocatingShardsIT.java index bab1c01321ba9..ab329bd7d741e 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/state/CloseWhileRelocatingShardsIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/state/CloseWhileRelocatingShardsIT.java @@ -223,7 +223,7 @@ public void testCloseWhileRelocatingShards() throws Exception { ); for (DiscoveryNode node : state.getNodes()) { - if (node.isDataNode() && node.getName().equals(targetNode) == false) { + if (node.canContainData() && node.getName().equals(targetNode) == false) { final TransportService sourceTransportService = internalCluster().getInstance(TransportService.class, node.getName()); targetTransportService.addSendBehavior(sourceTransportService, sendBehavior); } diff --git a/server/src/internalClusterTest/java/org/opensearch/recovery/TruncatedRecoveryIT.java b/server/src/internalClusterTest/java/org/opensearch/recovery/TruncatedRecoveryIT.java index e9515700199ba..beac2aa08fe4a 100644 --- a/server/src/internalClusterTest/java/org/opensearch/recovery/TruncatedRecoveryIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/recovery/TruncatedRecoveryIT.java @@ -106,7 +106,7 @@ public void testCancelRecoveryAndResume() throws Exception { NodesStatsResponse nodeStats = client().admin().cluster().prepareNodesStats().get(); List dataNodeStats = new ArrayList<>(); for (NodeStats stat : nodeStats.getNodes()) { - if (stat.getNode().isDataNode()) { + if (stat.getNode().canContainData()) { dataNodeStats.add(stat); } } diff --git a/server/src/internalClusterTest/java/org/opensearch/remotestore/RemoteStoreStatsFromNodesStatsIT.java b/server/src/internalClusterTest/java/org/opensearch/remotestore/RemoteStoreStatsFromNodesStatsIT.java index 6e796bdae5a4a..8013226d7d810 100644 --- a/server/src/internalClusterTest/java/org/opensearch/remotestore/RemoteStoreStatsFromNodesStatsIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/remotestore/RemoteStoreStatsFromNodesStatsIT.java @@ -112,7 +112,7 @@ public void testZeroRemoteStatsOnNodesStatsForClusterManager() { assertTrue( nodesStatsResponseForClusterManager.getNodes().get(0).getNode().isClusterManagerNode() - && !nodesStatsResponseForClusterManager.getNodes().get(0).getNode().isDataNode() + && !nodesStatsResponseForClusterManager.getNodes().get(0).getNode().canContainData() ); assertZeroRemoteSegmentStats( nodesStatsResponseForClusterManager.getNodes().get(0).getIndices().getSegments().getRemoteSegmentStats() @@ -127,7 +127,7 @@ public void testZeroRemoteStatsOnNodesStatsForClusterManager() { .setIndices(new CommonStatsFlags().set(CommonStatsFlags.Flag.Segments, true).set(CommonStatsFlags.Flag.Translog, true)) .get(); - assertTrue(nodesStatsResponseForDataNode.getNodes().get(0).getNode().isDataNode()); + assertTrue(nodesStatsResponseForDataNode.getNodes().get(0).getNode().canContainData()); RemoteSegmentStats remoteSegmentStats = nodesStatsResponseForDataNode.getNodes() .get(0) .getIndices() diff --git a/server/src/internalClusterTest/java/org/opensearch/search/SearchWeightedRoutingIT.java b/server/src/internalClusterTest/java/org/opensearch/search/SearchWeightedRoutingIT.java index 7516b0090d2fa..97923646e6392 100644 --- a/server/src/internalClusterTest/java/org/opensearch/search/SearchWeightedRoutingIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/search/SearchWeightedRoutingIT.java @@ -846,7 +846,7 @@ private void assertNoSearchInAZ(String az) { NodesStatsResponse nodeStats = client().admin().cluster().prepareNodesStats().execute().actionGet(); for (NodeStats stat : nodeStats.getNodes()) { SearchStats.Stats searchStats = stat.getIndices().getSearch().getTotal(); - if (stat.getNode().isDataNode()) { + if (stat.getNode().canContainData()) { if (stat.getNode().getId().equals(dataNodeId)) { assertEquals(0, searchStats.getQueryCount()); assertEquals(0, searchStats.getFetchCount()); @@ -870,7 +870,7 @@ private void assertSearchInAZ(String az) { NodesStatsResponse nodeStats = client().admin().cluster().prepareNodesStats().execute().actionGet(); for (NodeStats stat : nodeStats.getNodes()) { SearchStats.Stats searchStats = stat.getIndices().getSearch().getTotal(); - if (stat.getNode().isDataNode()) { + if (stat.getNode().canContainData()) { if (stat.getNode().getId().equals(dataNodeId)) { Assert.assertTrue(searchStats.getFetchCount() > 0L || searchStats.getQueryCount() > 0L); } diff --git a/server/src/main/java/org/opensearch/action/admin/cluster/health/TransportClusterHealthAction.java b/server/src/main/java/org/opensearch/action/admin/cluster/health/TransportClusterHealthAction.java index 8f0202e6d1ed0..7c530946cf4e3 100644 --- a/server/src/main/java/org/opensearch/action/admin/cluster/health/TransportClusterHealthAction.java +++ b/server/src/main/java/org/opensearch/action/admin/cluster/health/TransportClusterHealthAction.java @@ -286,7 +286,7 @@ private void executeHealth( } else { DiscoveryNode localNode = currentState.getNodes().getLocalNode(); // TODO: make this check more generic, check for node role instead - if (localNode.isDataNode()) { + if (localNode.canContainData()) { assert request.local() == true : "local node request false for request for local node weighed in"; boolean weighedAway = WeightedRoutingUtils.isWeighedAway(localNode.getId(), currentState); if (weighedAway) { diff --git a/server/src/main/java/org/opensearch/cluster/InternalClusterInfoService.java b/server/src/main/java/org/opensearch/cluster/InternalClusterInfoService.java index 804325dc1f565..2ed822e82ed53 100644 --- a/server/src/main/java/org/opensearch/cluster/InternalClusterInfoService.java +++ b/server/src/main/java/org/opensearch/cluster/InternalClusterInfoService.java @@ -173,7 +173,7 @@ public void clusterChanged(ClusterChangedEvent event) { // Refresh if a data node was added for (DiscoveryNode addedNode : event.nodesDelta().addedNodes()) { - if (addedNode.isDataNode()) { + if (addedNode.canContainData()) { executeRefresh(event.state(), "data node added"); break; } @@ -181,7 +181,7 @@ public void clusterChanged(ClusterChangedEvent event) { // Clean up info for any removed nodes for (DiscoveryNode removedNode : event.nodesDelta().removedNodes()) { - if (removedNode.isDataNode()) { + if (removedNode.canContainData()) { logger.trace("Removing node from cluster info: {}", removedNode.getId()); if (leastAvailableSpaceUsages.containsKey(removedNode.getId())) { Map newMaxUsages = new HashMap<>(leastAvailableSpaceUsages); diff --git a/server/src/main/java/org/opensearch/cluster/node/DiscoveryNode.java b/server/src/main/java/org/opensearch/cluster/node/DiscoveryNode.java index eceb076dfc926..7e40b49ea09c3 100644 --- a/server/src/main/java/org/opensearch/cluster/node/DiscoveryNode.java +++ b/server/src/main/java/org/opensearch/cluster/node/DiscoveryNode.java @@ -79,7 +79,7 @@ public class DiscoveryNode implements VerifiableWriteable, ToXContentFragment { public static boolean nodeRequiresLocalStorage(Settings settings) { boolean localStorageEnable = Node.NODE_LOCAL_STORAGE_SETTING.get(settings); - if (localStorageEnable == false && (isDataNode(settings) || isClusterManagerNode(settings))) { + if (localStorageEnable == false && (canContainData(settings) || isClusterManagerNode(settings))) { // TODO: make this a proper setting validation logic, requiring multi-settings validation throw new IllegalArgumentException("storage can not be disabled for cluster-manager and data nodes"); } @@ -110,10 +110,14 @@ public static boolean isClusterManagerNode(Settings settings) { * not all roles may be available from a static/initializing context such as a {@link Setting} * default value function. In that case, be warned that this may not include all plugin roles. */ - public static boolean isDataNode(final Settings settings) { + public static boolean canContainData(final Settings settings) { return getRolesFromSettings(settings).stream().anyMatch(DiscoveryNodeRole::canContainData); } + public static boolean isDataNode(final Settings settings) { + return hasRole(settings, DiscoveryNodeRole.DATA_ROLE); + } + public static boolean isIngestNode(Settings settings) { return hasRole(settings, DiscoveryNodeRole.INGEST_ROLE); } @@ -452,10 +456,14 @@ public Map getAttributes() { /** * Should this node hold data (shards) or not. */ - public boolean isDataNode() { + public boolean canContainData() { return roles.stream().anyMatch(DiscoveryNodeRole::canContainData); } + public boolean isDataNode() { + return roles.contains(DiscoveryNodeRole.DATA_ROLE); + } + /** * Can this node become cluster-manager or not. */ diff --git a/server/src/main/java/org/opensearch/cluster/node/DiscoveryNodes.java b/server/src/main/java/org/opensearch/cluster/node/DiscoveryNodes.java index b9169169703d4..7aa2b1e7290b7 100644 --- a/server/src/main/java/org/opensearch/cluster/node/DiscoveryNodes.java +++ b/server/src/main/java/org/opensearch/cluster/node/DiscoveryNodes.java @@ -816,7 +816,7 @@ public DiscoveryNodes build() { clusterManagerNodesBuilder.put(nodeEntry.getKey(), nodeEntry.getValue()); } final Version version = nodeEntry.getValue().getVersion(); - if (nodeEntry.getValue().isDataNode() || nodeEntry.getValue().isClusterManagerNode()) { + if (nodeEntry.getValue().canContainData() || nodeEntry.getValue().isClusterManagerNode()) { if (minNonClientNodeVersion == null) { minNonClientNodeVersion = version; maxNonClientNodeVersion = version; diff --git a/server/src/main/java/org/opensearch/cluster/routing/allocation/command/AbstractAllocateAllocationCommand.java b/server/src/main/java/org/opensearch/cluster/routing/allocation/command/AbstractAllocateAllocationCommand.java index e8e6b48d0901e..8193f47887c43 100644 --- a/server/src/main/java/org/opensearch/cluster/routing/allocation/command/AbstractAllocateAllocationCommand.java +++ b/server/src/main/java/org/opensearch/cluster/routing/allocation/command/AbstractAllocateAllocationCommand.java @@ -166,7 +166,7 @@ public String node() { * Handle case where a disco node cannot be found in the routing table. Usually means that it's not a data node. */ protected RerouteExplanation explainOrThrowMissingRoutingNode(RoutingAllocation allocation, boolean explain, DiscoveryNode discoNode) { - if (!discoNode.isDataNode()) { + if (!discoNode.canContainData()) { return explainOrThrowRejectedCommand(explain, allocation, "allocation can only be done on data nodes, not [" + node + "]"); } else { return explainOrThrowRejectedCommand(explain, allocation, "could not find [" + node + "] among the routing nodes"); diff --git a/server/src/main/java/org/opensearch/cluster/routing/allocation/command/MoveAllocationCommand.java b/server/src/main/java/org/opensearch/cluster/routing/allocation/command/MoveAllocationCommand.java index e3e152dd88889..f9ad7e48489c8 100644 --- a/server/src/main/java/org/opensearch/cluster/routing/allocation/command/MoveAllocationCommand.java +++ b/server/src/main/java/org/opensearch/cluster/routing/allocation/command/MoveAllocationCommand.java @@ -120,7 +120,7 @@ public RerouteExplanation execute(RoutingAllocation allocation, boolean explain) boolean found = false; RoutingNode fromRoutingNode = allocation.routingNodes().node(fromDiscoNode.getId()); - if (fromRoutingNode == null && !fromDiscoNode.isDataNode()) { + if (fromRoutingNode == null && !fromDiscoNode.canContainData()) { throw new IllegalArgumentException( "[move_allocation] can't move [" + index @@ -136,7 +136,7 @@ public RerouteExplanation execute(RoutingAllocation allocation, boolean explain) ); } RoutingNode toRoutingNode = allocation.routingNodes().node(toDiscoNode.getId()); - if (toRoutingNode == null && !toDiscoNode.isDataNode()) { + if (toRoutingNode == null && !toDiscoNode.canContainData()) { throw new IllegalArgumentException( "[move_allocation] can't move [" + index diff --git a/server/src/main/java/org/opensearch/env/NodeEnvironment.java b/server/src/main/java/org/opensearch/env/NodeEnvironment.java index 9560bfc547480..661429aa549e3 100644 --- a/server/src/main/java/org/opensearch/env/NodeEnvironment.java +++ b/server/src/main/java/org/opensearch/env/NodeEnvironment.java @@ -376,11 +376,11 @@ public NodeEnvironment(Settings settings, Environment environment, IndexStoreLis applySegmentInfosTrace(settings); assertCanWrite(); - if (DiscoveryNode.isClusterManagerNode(settings) || DiscoveryNode.isDataNode(settings)) { + if (DiscoveryNode.isClusterManagerNode(settings) || DiscoveryNode.canContainData(settings)) { ensureAtomicMoveSupported(nodePaths); } - if (DiscoveryNode.isDataNode(settings) == false) { + if (DiscoveryNode.canContainData(settings) == false) { if (DiscoveryNode.isClusterManagerNode(settings) == false) { ensureNoIndexMetadata(nodePaths); } diff --git a/server/src/main/java/org/opensearch/env/NodeRepurposeCommand.java b/server/src/main/java/org/opensearch/env/NodeRepurposeCommand.java index 1d68829ececfd..438554b97eb36 100644 --- a/server/src/main/java/org/opensearch/env/NodeRepurposeCommand.java +++ b/server/src/main/java/org/opensearch/env/NodeRepurposeCommand.java @@ -86,7 +86,7 @@ void testExecute(Terminal terminal, OptionSet options, Environment env) throws E @Override protected boolean validateBeforeLock(Terminal terminal, Environment env) { Settings settings = env.settings(); - if (DiscoveryNode.isDataNode(settings) && DiscoveryNode.isWarmNode(settings)) { + if (DiscoveryNode.canContainData(settings) && DiscoveryNode.isWarmNode(settings)) { terminal.println(Terminal.Verbosity.NORMAL, NO_CLEANUP); return false; } @@ -97,9 +97,9 @@ protected boolean validateBeforeLock(Terminal terminal, Environment env) { @Override protected void processNodePaths(Terminal terminal, Path[] dataPaths, int nodeLockId, OptionSet options, Environment env) throws IOException { - assert DiscoveryNode.isDataNode(env.settings()) == false || DiscoveryNode.isWarmNode(env.settings()) == false; + assert DiscoveryNode.canContainData(env.settings()) == false || DiscoveryNode.isWarmNode(env.settings()) == false; - boolean repurposeData = DiscoveryNode.isDataNode(env.settings()) == false; + boolean repurposeData = DiscoveryNode.canContainData(env.settings()) == false; boolean repurposeWarm = DiscoveryNode.isWarmNode(env.settings()) == false; if (DiscoveryNode.isClusterManagerNode(env.settings()) == false) { diff --git a/server/src/main/java/org/opensearch/gateway/GatewayMetaState.java b/server/src/main/java/org/opensearch/gateway/GatewayMetaState.java index 1e2f5612ca002..fdfcd80306c04 100644 --- a/server/src/main/java/org/opensearch/gateway/GatewayMetaState.java +++ b/server/src/main/java/org/opensearch/gateway/GatewayMetaState.java @@ -138,7 +138,7 @@ public void start( assert this.persistedStateRegistry == null : "Persisted state registry should only be set once"; this.persistedStateRegistry = persistedStateRegistry; - if (DiscoveryNode.isClusterManagerNode(settings) || DiscoveryNode.isDataNode(settings)) { + if (DiscoveryNode.isClusterManagerNode(settings) || DiscoveryNode.canContainData(settings)) { try { final PersistedClusterStateService.OnDiskState onDiskState = persistedClusterStateService.loadBestOnDiskState(); @@ -205,7 +205,7 @@ public void start( new LucenePersistedState(persistedClusterStateService, currentTerm, clusterState) ); } - if (DiscoveryNode.isDataNode(settings)) { + if (DiscoveryNode.canContainData(settings)) { metaStateService.unreferenceAll(); // unreference legacy files (only keep them for dangling indices functionality) } else { metaStateService.deleteAll(); // delete legacy files diff --git a/server/src/main/java/org/opensearch/gateway/IncrementalClusterStateWriter.java b/server/src/main/java/org/opensearch/gateway/IncrementalClusterStateWriter.java index ec599df7f7426..17836257511b3 100644 --- a/server/src/main/java/org/opensearch/gateway/IncrementalClusterStateWriter.java +++ b/server/src/main/java/org/opensearch/gateway/IncrementalClusterStateWriter.java @@ -238,7 +238,7 @@ static List resolveIndexMetadataActions( // exposed for tests static Set getRelevantIndices(ClusterState state) { - assert state.nodes().getLocalNode().isDataNode(); + assert state.nodes().getLocalNode().canContainData(); final RoutingNode newRoutingNode = state.getRoutingNodes().node(state.nodes().getLocalNodeId()); if (newRoutingNode == null) { throw new IllegalStateException("cluster state does not contain this node - cannot write index meta state"); diff --git a/server/src/main/java/org/opensearch/indices/IndicesService.java b/server/src/main/java/org/opensearch/indices/IndicesService.java index f3b0121dd5c88..c9c0ec9fbd504 100644 --- a/server/src/main/java/org/opensearch/indices/IndicesService.java +++ b/server/src/main/java/org/opensearch/indices/IndicesService.java @@ -2024,7 +2024,7 @@ private void setIdFieldDataEnabled(boolean value) { } private void updateDanglingIndicesInfo(Index index) { - assert DiscoveryNode.isDataNode(settings) : "dangling indices information should only be persisted on data nodes"; + assert DiscoveryNode.canContainData(settings) : "dangling indices information should only be persisted on data nodes"; assert nodeWriteDanglingIndicesInfo : "writing dangling indices info is not enabled"; assert danglingIndicesThreadPoolExecutor != null : "executor for dangling indices info is not available"; if (danglingIndicesToWrite.add(index)) { diff --git a/server/src/main/java/org/opensearch/indices/cluster/IndicesClusterStateService.java b/server/src/main/java/org/opensearch/indices/cluster/IndicesClusterStateService.java index 2c3ffcdd9e0ba..5353e899fc018 100644 --- a/server/src/main/java/org/opensearch/indices/cluster/IndicesClusterStateService.java +++ b/server/src/main/java/org/opensearch/indices/cluster/IndicesClusterStateService.java @@ -243,14 +243,14 @@ public IndicesClusterStateService( @Override protected void doStart() { // Doesn't make sense to manage shards on non-master and non-data nodes - if (DiscoveryNode.isDataNode(settings) || DiscoveryNode.isClusterManagerNode(settings)) { + if (DiscoveryNode.canContainData(settings) || DiscoveryNode.isClusterManagerNode(settings)) { clusterService.addHighPriorityApplier(this); } } @Override protected void doStop() { - if (DiscoveryNode.isDataNode(settings) || DiscoveryNode.isClusterManagerNode(settings)) { + if (DiscoveryNode.canContainData(settings) || DiscoveryNode.isClusterManagerNode(settings)) { clusterService.removeApplier(this); } } diff --git a/server/src/main/java/org/opensearch/indices/recovery/PeerRecoverySourceService.java b/server/src/main/java/org/opensearch/indices/recovery/PeerRecoverySourceService.java index 30f517fda9931..47856ec61b6d0 100644 --- a/server/src/main/java/org/opensearch/indices/recovery/PeerRecoverySourceService.java +++ b/server/src/main/java/org/opensearch/indices/recovery/PeerRecoverySourceService.java @@ -123,7 +123,7 @@ public PeerRecoverySourceService(TransportService transportService, IndicesServi @Override protected void doStart() { final ClusterService clusterService = indicesService.clusterService(); - if (DiscoveryNode.isDataNode(clusterService.getSettings())) { + if (DiscoveryNode.canContainData(clusterService.getSettings())) { clusterService.addListener(this); } } @@ -131,7 +131,7 @@ protected void doStart() { @Override protected void doStop() { final ClusterService clusterService = indicesService.clusterService(); - if (DiscoveryNode.isDataNode(clusterService.getSettings())) { + if (DiscoveryNode.canContainData(clusterService.getSettings())) { ongoingRecoveries.awaitEmpty(); indicesService.clusterService().removeListener(this); } diff --git a/server/src/main/java/org/opensearch/indices/replication/SegmentReplicationSourceService.java b/server/src/main/java/org/opensearch/indices/replication/SegmentReplicationSourceService.java index 21fd066b8be2f..985bca9485e5c 100644 --- a/server/src/main/java/org/opensearch/indices/replication/SegmentReplicationSourceService.java +++ b/server/src/main/java/org/opensearch/indices/replication/SegmentReplicationSourceService.java @@ -198,7 +198,7 @@ public void clusterChanged(ClusterChangedEvent event) { @Override protected void doStart() { final ClusterService clusterService = indicesService.clusterService(); - if (DiscoveryNode.isDataNode(clusterService.getSettings())) { + if (DiscoveryNode.canContainData(clusterService.getSettings())) { clusterService.addListener(this); } } @@ -206,7 +206,7 @@ protected void doStart() { @Override protected void doStop() { final ClusterService clusterService = indicesService.clusterService(); - if (DiscoveryNode.isDataNode(clusterService.getSettings())) { + if (DiscoveryNode.canContainData(clusterService.getSettings())) { indicesService.clusterService().removeListener(this); } } diff --git a/server/src/main/java/org/opensearch/indices/replication/SegmentReplicationTargetService.java b/server/src/main/java/org/opensearch/indices/replication/SegmentReplicationTargetService.java index d57f35a5079fc..040af2afef150 100644 --- a/server/src/main/java/org/opensearch/indices/replication/SegmentReplicationTargetService.java +++ b/server/src/main/java/org/opensearch/indices/replication/SegmentReplicationTargetService.java @@ -157,14 +157,14 @@ public SegmentReplicationTargetService( @Override protected void doStart() { - if (DiscoveryNode.isDataNode(clusterService.getSettings())) { + if (DiscoveryNode.canContainData(clusterService.getSettings())) { clusterService.addListener(this); } } @Override protected void doStop() { - if (DiscoveryNode.isDataNode(clusterService.getSettings())) { + if (DiscoveryNode.canContainData(clusterService.getSettings())) { assert replicator.size() == 0 : "Replication collection should be empty on shutdown"; clusterService.removeListener(this); } diff --git a/server/src/main/java/org/opensearch/indices/store/IndicesStore.java b/server/src/main/java/org/opensearch/indices/store/IndicesStore.java index 1efaca09204da..47d230507511d 100644 --- a/server/src/main/java/org/opensearch/indices/store/IndicesStore.java +++ b/server/src/main/java/org/opensearch/indices/store/IndicesStore.java @@ -133,7 +133,7 @@ public IndicesStore( ); this.deleteShardTimeout = INDICES_STORE_DELETE_SHARD_TIMEOUT.get(settings); // Doesn't make sense to delete shards on non-data nodes - if (DiscoveryNode.isDataNode(settings)) { + if (DiscoveryNode.canContainData(settings)) { // we double check nothing has changed when responses come back from other nodes. // it's easier to do that check when the current cluster state is visible. // also it's good in general to let things settle down @@ -143,7 +143,7 @@ public IndicesStore( @Override public void close() { - if (DiscoveryNode.isDataNode(settings)) { + if (DiscoveryNode.canContainData(settings)) { clusterService.removeListener(this); } } diff --git a/server/src/main/java/org/opensearch/persistent/PersistentTasksExecutor.java b/server/src/main/java/org/opensearch/persistent/PersistentTasksExecutor.java index ab2e50d5fb42b..1fe131361c17c 100644 --- a/server/src/main/java/org/opensearch/persistent/PersistentTasksExecutor.java +++ b/server/src/main/java/org/opensearch/persistent/PersistentTasksExecutor.java @@ -70,7 +70,7 @@ public String getTaskName() { * The default implementation returns the least loaded data node */ public Assignment getAssignment(Params params, ClusterState clusterState) { - DiscoveryNode discoveryNode = selectLeastLoadedNode(clusterState, DiscoveryNode::isDataNode); + DiscoveryNode discoveryNode = selectLeastLoadedNode(clusterState, DiscoveryNode::canContainData); if (discoveryNode == null) { return NO_NODE_FOUND; } else { diff --git a/server/src/main/java/org/opensearch/repositories/RepositoriesService.java b/server/src/main/java/org/opensearch/repositories/RepositoriesService.java index 49065be0abb25..46b88ab509c0d 100644 --- a/server/src/main/java/org/opensearch/repositories/RepositoriesService.java +++ b/server/src/main/java/org/opensearch/repositories/RepositoriesService.java @@ -145,7 +145,7 @@ public RepositoriesService( this.threadPool = threadPool; // Doesn't make sense to maintain repositories on non-master and non-data nodes // Nothing happens there anyway - if (DiscoveryNode.isDataNode(settings) || DiscoveryNode.isClusterManagerNode(settings)) { + if (DiscoveryNode.canContainData(settings) || DiscoveryNode.isClusterManagerNode(settings)) { if (isDedicatedVotingOnlyNode(DiscoveryNode.getRolesFromSettings(settings)) == false) { clusterService.addHighPriorityApplier(this); } @@ -305,7 +305,7 @@ public void onFailure(String source, Exception e) { @Override public boolean mustAck(DiscoveryNode discoveryNode) { // repository is created on both cluster-manager and data nodes - return discoveryNode.isClusterManagerNode() || discoveryNode.isDataNode(); + return discoveryNode.isClusterManagerNode() || discoveryNode.canContainData(); } } ); @@ -366,7 +366,7 @@ public ClusterManagerTaskThrottler.ThrottlingKey getClusterManagerThrottlingKey( @Override public boolean mustAck(DiscoveryNode discoveryNode) { // repository was created on both cluster-manager and data nodes - return discoveryNode.isClusterManagerNode() || discoveryNode.isDataNode(); + return discoveryNode.isClusterManagerNode() || discoveryNode.canContainData(); } } ); diff --git a/server/src/main/java/org/opensearch/snapshots/SnapshotShardsService.java b/server/src/main/java/org/opensearch/snapshots/SnapshotShardsService.java index 1e2264593310d..1247ff3fc1e38 100644 --- a/server/src/main/java/org/opensearch/snapshots/SnapshotShardsService.java +++ b/server/src/main/java/org/opensearch/snapshots/SnapshotShardsService.java @@ -122,7 +122,7 @@ public SnapshotShardsService( this.transportService = transportService; this.clusterService = clusterService; this.threadPool = transportService.getThreadPool(); - if (DiscoveryNode.isDataNode(settings)) { + if (DiscoveryNode.canContainData(settings)) { // this is only useful on the nodes that can hold data clusterService.addListener(this); } diff --git a/server/src/main/java/org/opensearch/transport/ConnectionProfile.java b/server/src/main/java/org/opensearch/transport/ConnectionProfile.java index 931707e4a1cdc..464b31919586d 100644 --- a/server/src/main/java/org/opensearch/transport/ConnectionProfile.java +++ b/server/src/main/java/org/opensearch/transport/ConnectionProfile.java @@ -110,7 +110,10 @@ public static ConnectionProfile buildDefaultConnectionProfile(Settings settings) TransportRequestOptions.Type.STATE ); // if we are not a data-node we don't need any dedicated channels for recovery - builder.addConnections(DiscoveryNode.isDataNode(settings) ? connectionsPerNodeRecovery : 0, TransportRequestOptions.Type.RECOVERY); + builder.addConnections( + DiscoveryNode.canContainData(settings) ? connectionsPerNodeRecovery : 0, + TransportRequestOptions.Type.RECOVERY + ); builder.addConnections(connectionsPerNodeReg, TransportRequestOptions.Type.REG); return builder.build(); } diff --git a/server/src/main/java/org/opensearch/transport/SniffConnectionStrategy.java b/server/src/main/java/org/opensearch/transport/SniffConnectionStrategy.java index 1d94228218fd0..264721d19ecf8 100644 --- a/server/src/main/java/org/opensearch/transport/SniffConnectionStrategy.java +++ b/server/src/main/java/org/opensearch/transport/SniffConnectionStrategy.java @@ -142,7 +142,7 @@ public class SniffConnectionStrategy extends RemoteConnectionStrategy { static final int CHANNELS_PER_CONNECTION = 6; private static final Predicate DEFAULT_NODE_PREDICATE = (node) -> Version.CURRENT.isCompatible(node.getVersion()) - && (node.isClusterManagerNode() == false || node.isDataNode() || node.isIngestNode()); + && (node.isClusterManagerNode() == false || node.canContainData() || node.isIngestNode()); private final List configuredSeedNodes; private final List> seedNodes; diff --git a/server/src/test/java/org/opensearch/action/support/nodes/TransportNodesActionTests.java b/server/src/test/java/org/opensearch/action/support/nodes/TransportNodesActionTests.java index a338e68276bbc..0ccf361ded10b 100644 --- a/server/src/test/java/org/opensearch/action/support/nodes/TransportNodesActionTests.java +++ b/server/src/test/java/org/opensearch/action/support/nodes/TransportNodesActionTests.java @@ -163,7 +163,7 @@ public void testCustomResolving() throws Exception { Map> capturedRequests = transport.getCapturedRequestsByTargetNodeAndClear(); // check requests were only sent to data nodes for (String nodeTarget : capturedRequests.keySet()) { - assertTrue(clusterService.state().nodes().get(nodeTarget).isDataNode()); + assertTrue(clusterService.state().nodes().get(nodeTarget).canContainData()); } assertEquals(clusterService.state().nodes().getDataNodes().size(), capturedRequests.size()); } diff --git a/server/src/test/java/org/opensearch/cluster/node/DiscoveryNodeRoleSettingTests.java b/server/src/test/java/org/opensearch/cluster/node/DiscoveryNodeRoleSettingTests.java index f5935af47fef5..29194a75e932b 100644 --- a/server/src/test/java/org/opensearch/cluster/node/DiscoveryNodeRoleSettingTests.java +++ b/server/src/test/java/org/opensearch/cluster/node/DiscoveryNodeRoleSettingTests.java @@ -48,7 +48,7 @@ public class DiscoveryNodeRoleSettingTests extends OpenSearchTestCase { public void testIsDataNode() { - runRoleTest(DiscoveryNode::isDataNode, DiscoveryNodeRole.DATA_ROLE); + runRoleTest(DiscoveryNode::canContainData, DiscoveryNodeRole.DATA_ROLE); } public void testIsIngestNode() { diff --git a/server/src/test/java/org/opensearch/cluster/node/DiscoveryNodesTests.java b/server/src/test/java/org/opensearch/cluster/node/DiscoveryNodesTests.java index 61b86856c9ebc..c6b41e85ff515 100644 --- a/server/src/test/java/org/opensearch/cluster/node/DiscoveryNodesTests.java +++ b/server/src/test/java/org/opensearch/cluster/node/DiscoveryNodesTests.java @@ -126,12 +126,12 @@ public void testCoordinatorOnlyNodes() { final DiscoveryNodes discoveryNodes = buildDiscoveryNodes(); final String[] coordinatorOnlyNodes = StreamSupport.stream(discoveryNodes.getNodes().values().spliterator(), false) - .filter(n -> n.isDataNode() == false && n.isIngestNode() == false && n.isClusterManagerNode() == false) + .filter(n -> n.canContainData() == false && n.isIngestNode() == false && n.isClusterManagerNode() == false) .map(DiscoveryNode::getId) .toArray(String[]::new); final String[] nonCoordinatorOnlyNodes = StreamSupport.stream(discoveryNodes.getNodes().values().spliterator(), false) - .filter(n -> n.isClusterManagerNode() || n.isDataNode() || n.isIngestNode()) + .filter(n -> n.isClusterManagerNode() || n.canContainData() || n.isIngestNode()) .map(DiscoveryNode::getId) .toArray(String[]::new); diff --git a/server/src/test/java/org/opensearch/snapshots/SnapshotResiliencyTests.java b/server/src/test/java/org/opensearch/snapshots/SnapshotResiliencyTests.java index 580b507292ea8..ec10813516c87 100644 --- a/server/src/test/java/org/opensearch/snapshots/SnapshotResiliencyTests.java +++ b/server/src/test/java/org/opensearch/snapshots/SnapshotResiliencyTests.java @@ -1826,14 +1826,19 @@ public TestClusterNode randomDataNodeSafe(String... excludedNames) { public Optional randomDataNode(String... excludedNames) { // Select from sorted list of data-nodes here to not have deterministic behaviour - final List dataNodes = testClusterNodes.nodes.values().stream().filter(n -> n.node.isDataNode()).filter(n -> { - for (final String nodeName : excludedNames) { - if (n.node.getName().equals(nodeName)) { - return false; + final List dataNodes = testClusterNodes.nodes.values() + .stream() + .filter(n -> n.node.canContainData()) + .filter(n -> { + for (final String nodeName : excludedNames) { + if (n.node.getName().equals(nodeName)) { + return false; + } } - } - return true; - }).sorted(Comparator.comparing(n -> n.node.getName())).collect(Collectors.toList()); + return true; + }) + .sorted(Comparator.comparing(n -> n.node.getName())) + .collect(Collectors.toList()); return dataNodes.isEmpty() ? Optional.empty() : Optional.ofNullable(randomFrom(dataNodes)); } diff --git a/test/framework/src/main/java/org/opensearch/test/ExternalTestCluster.java b/test/framework/src/main/java/org/opensearch/test/ExternalTestCluster.java index e04e621fa32ad..da85ec7d58d35 100644 --- a/test/framework/src/main/java/org/opensearch/test/ExternalTestCluster.java +++ b/test/framework/src/main/java/org/opensearch/test/ExternalTestCluster.java @@ -145,7 +145,7 @@ public ExternalTestCluster( for (int i = 0; i < nodeInfos.getNodes().size(); i++) { NodeInfo nodeInfo = nodeInfos.getNodes().get(i); httpAddresses[i] = nodeInfo.getInfo(HttpInfo.class).address().publishAddress().address(); - if (DiscoveryNode.isDataNode(nodeInfo.getSettings())) { + if (DiscoveryNode.canContainData(nodeInfo.getSettings())) { dataNodes++; clusterManagerAndDataNodes++; } else if (DiscoveryNode.isClusterManagerNode(nodeInfo.getSettings())) { diff --git a/test/framework/src/main/java/org/opensearch/test/InternalTestCluster.java b/test/framework/src/main/java/org/opensearch/test/InternalTestCluster.java index 241a919304fec..9b137109bfe8d 100644 --- a/test/framework/src/main/java/org/opensearch/test/InternalTestCluster.java +++ b/test/framework/src/main/java/org/opensearch/test/InternalTestCluster.java @@ -198,7 +198,7 @@ public final class InternalTestCluster extends TestCluster { private final Logger logger = LogManager.getLogger(getClass()); - private static final Predicate DATA_NODE_PREDICATE = nodeAndClient -> DiscoveryNode.isDataNode( + private static final Predicate DATA_NODE_PREDICATE = nodeAndClient -> DiscoveryNode.canContainData( nodeAndClient.node.settings() ); @@ -210,11 +210,11 @@ public final class InternalTestCluster extends TestCluster { private static final Predicate WARM_AND_DATA_NODE_PREDICATE = nodeAndClient -> DiscoveryNode.hasRole( nodeAndClient.node.settings(), DiscoveryNodeRole.WARM_ROLE - ) && DiscoveryNode.isDataNode(nodeAndClient.node.settings()); + ) && DiscoveryNode.canContainData(nodeAndClient.node.settings()); private static final Predicate NO_DATA_NO_CLUSTER_MANAGER_PREDICATE = nodeAndClient -> DiscoveryNode .isClusterManagerNode(nodeAndClient.node.settings()) == false - && DiscoveryNode.isDataNode(nodeAndClient.node.settings()) == false; + && DiscoveryNode.canContainData(nodeAndClient.node.settings()) == false; private static final Predicate CLUSTER_MANAGER_NODE_PREDICATE = nodeAndClient -> DiscoveryNode.isClusterManagerNode( nodeAndClient.node.settings() @@ -846,10 +846,10 @@ private static String getRoleSuffix(Settings settings) { if (DiscoveryNode.isClusterManagerNode(settings)) { suffix = suffix + DiscoveryNodeRole.CLUSTER_MANAGER_ROLE.roleNameAbbreviation(); } - if (DiscoveryNode.isDataNode(settings)) { + if (DiscoveryNode.canContainData(settings)) { suffix = suffix + DiscoveryNodeRole.DATA_ROLE.roleNameAbbreviation(); } - if (!DiscoveryNode.isClusterManagerNode(settings) && !DiscoveryNode.isDataNode(settings)) { + if (!DiscoveryNode.isClusterManagerNode(settings) && !DiscoveryNode.canContainData(settings)) { suffix = suffix + "c"; } } diff --git a/test/framework/src/test/java/org/opensearch/test/test/InternalTestClusterTests.java b/test/framework/src/test/java/org/opensearch/test/test/InternalTestClusterTests.java index 328726feb62ba..2b99dd88227f6 100644 --- a/test/framework/src/test/java/org/opensearch/test/test/InternalTestClusterTests.java +++ b/test/framework/src/test/java/org/opensearch/test/test/InternalTestClusterTests.java @@ -441,7 +441,7 @@ public Path nodeConfigPath(int nodeOrdinal) { List paths = Arrays.stream(getNodePaths(cluster, name)).map(Path::toString).collect(Collectors.toList()); if (node.isClusterManagerNode()) { result.computeIfAbsent(clusterManagerRole, k -> new HashSet<>()).addAll(paths); - } else if (node.isDataNode()) { + } else if (node.canContainData()) { result.computeIfAbsent(DiscoveryNodeRole.DATA_ROLE, k -> new HashSet<>()).addAll(paths); } else { result.computeIfAbsent(DiscoveryNodeRole.INGEST_ROLE, k -> new HashSet<>()).addAll(paths);