diff --git a/server/src/main/java/org/opensearch/action/admin/cluster/shards/routing/weighted/delete/ClusterDeleteWeightedRoutingResponse.java b/server/src/main/java/org/opensearch/action/admin/cluster/shards/routing/weighted/delete/ClusterDeleteWeightedRoutingResponse.java index 52ec24a5d6653..edeb5b3b3a97c 100644 --- a/server/src/main/java/org/opensearch/action/admin/cluster/shards/routing/weighted/delete/ClusterDeleteWeightedRoutingResponse.java +++ b/server/src/main/java/org/opensearch/action/admin/cluster/shards/routing/weighted/delete/ClusterDeleteWeightedRoutingResponse.java @@ -11,7 +11,6 @@ import org.opensearch.action.support.master.AcknowledgedResponse; import org.opensearch.common.io.stream.StreamInput; import org.opensearch.common.io.stream.StreamOutput; -import org.opensearch.common.xcontent.ToXContentObject; import java.io.IOException; @@ -20,7 +19,8 @@ * * @opensearch.internal */ -public class ClusterDeleteWeightedRoutingResponse extends AcknowledgedResponse implements ToXContentObject { +public class ClusterDeleteWeightedRoutingResponse extends AcknowledgedResponse { + ClusterDeleteWeightedRoutingResponse(StreamInput in) throws IOException { super(in); } diff --git a/server/src/main/java/org/opensearch/action/admin/cluster/shards/routing/weighted/delete/TransportDeleteWeightedRoutingAction.java b/server/src/main/java/org/opensearch/action/admin/cluster/shards/routing/weighted/delete/TransportDeleteWeightedRoutingAction.java index 3d5258e46fcec..868fa5907fe85 100644 --- a/server/src/main/java/org/opensearch/action/admin/cluster/shards/routing/weighted/delete/TransportDeleteWeightedRoutingAction.java +++ b/server/src/main/java/org/opensearch/action/admin/cluster/shards/routing/weighted/delete/TransportDeleteWeightedRoutingAction.java @@ -15,6 +15,7 @@ import org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction; import org.opensearch.cluster.ClusterState; import org.opensearch.cluster.block.ClusterBlockException; +import org.opensearch.cluster.block.ClusterBlockLevel; import org.opensearch.cluster.metadata.IndexNameExpressionResolver; import org.opensearch.cluster.routing.WeightedRoutingService; import org.opensearch.cluster.service.ClusterService; @@ -71,7 +72,7 @@ protected ClusterDeleteWeightedRoutingResponse read(StreamInput in) throws IOExc @Override protected ClusterBlockException checkBlock(ClusterDeleteWeightedRoutingRequest request, ClusterState state) { - return null; + return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE); } @Override diff --git a/server/src/main/java/org/opensearch/cluster/routing/WeightedRoutingService.java b/server/src/main/java/org/opensearch/cluster/routing/WeightedRoutingService.java index c18afaf87bdfd..5dce6d386fa34 100644 --- a/server/src/main/java/org/opensearch/cluster/routing/WeightedRoutingService.java +++ b/server/src/main/java/org/opensearch/cluster/routing/WeightedRoutingService.java @@ -111,30 +111,25 @@ public void deleteWeightedRoutingMetadata( final ClusterDeleteWeightedRoutingRequest request, final ActionListener listener ) { - clusterService.submitStateUpdateTask("delete_weighted_routing", new ClusterStateUpdateTask(Priority.HIGH) { + clusterService.submitStateUpdateTask("delete_weighted_routing", new ClusterStateUpdateTask(Priority.URGENT) { @Override public ClusterState execute(ClusterState currentState) { - Metadata metadata = currentState.metadata(); + logger.info("Deleting weighted routing metadata from the cluster state"); Metadata.Builder mdBuilder = Metadata.builder(currentState.metadata()); - WeightedRoutingMetadata weightedRoutingMetadata = metadata.weightedRoutingMetadata(); - if (weightedRoutingMetadata == null) { - logger.info("weighted routing metadata is already deleted"); - return currentState; - } mdBuilder.removeCustom(WeightedRoutingMetadata.TYPE); - logger.info("building cluster state with weighted routing removed"); return ClusterState.builder(currentState).metadata(mdBuilder).build(); } @Override public void onFailure(String source, Exception e) { - logger.warn(() -> new ParameterizedMessage("failed to remove weighted routing from cluster state " + "metadata[{}]", e)); + logger.warn(() -> new ParameterizedMessage("failed to remove weighted routing metadata from cluster state [{}]", e)); listener.onFailure(e); } @Override public void clusterStateProcessed(String source, ClusterState oldState, ClusterState newState) { - logger.info("cluster weighted routing metadata change is processed by all the nodes"); + logger.debug("cluster weighted routing metadata change is processed by all the nodes"); + assert newState.metadata().weightedRoutingMetadata() == null; listener.onResponse(new ClusterStateUpdateResponse(true)); } }); diff --git a/server/src/test/java/org/opensearch/cluster/routing/WeightedRoutingServiceTests.java b/server/src/test/java/org/opensearch/cluster/routing/WeightedRoutingServiceTests.java index dc61532a3ea24..f4bfa5208b0e9 100644 --- a/server/src/test/java/org/opensearch/cluster/routing/WeightedRoutingServiceTests.java +++ b/server/src/test/java/org/opensearch/cluster/routing/WeightedRoutingServiceTests.java @@ -253,7 +253,7 @@ public void onResponse(ClusterStateUpdateResponse clusterStateUpdateResponse) { @Override public void onFailure(Exception e) { - fail("request should not fail"); + fail("on failure shouldn't have been called"); } }; weightedRoutingService.deleteWeightedRoutingMetadata(clusterDeleteWeightedRoutingRequest, listener);