Преглед изворни кода

Make `OpenIndexClusterStateUpdateRequest` a record (#113351) (#113390)

No need to extend `IndicesClusterStateUpdateRequest`, this thing can be
completely immutable.
David Turner пре 1 година
родитељ
комит
2b30482e76

+ 15 - 16
server/src/main/java/org/elasticsearch/action/admin/indices/open/OpenIndexClusterStateUpdateRequest.java

@@ -9,25 +9,24 @@
 package org.elasticsearch.action.admin.indices.open;
 
 import org.elasticsearch.action.support.ActiveShardCount;
-import org.elasticsearch.cluster.ack.IndicesClusterStateUpdateRequest;
+import org.elasticsearch.core.TimeValue;
+import org.elasticsearch.index.Index;
+
+import java.util.Objects;
 
 /**
  * Cluster state update request that allows to open one or more indices
  */
-public class OpenIndexClusterStateUpdateRequest extends IndicesClusterStateUpdateRequest<OpenIndexClusterStateUpdateRequest> {
-
-    private ActiveShardCount waitForActiveShards = ActiveShardCount.DEFAULT;
-
-    public OpenIndexClusterStateUpdateRequest() {
-
-    }
-
-    public ActiveShardCount waitForActiveShards() {
-        return waitForActiveShards;
-    }
-
-    public OpenIndexClusterStateUpdateRequest waitForActiveShards(ActiveShardCount waitForActiveShards) {
-        this.waitForActiveShards = waitForActiveShards;
-        return this;
+public record OpenIndexClusterStateUpdateRequest(
+    TimeValue masterNodeTimeout,
+    TimeValue ackTimeout,
+    ActiveShardCount waitForActiveShards,
+    Index[] indices
+) {
+    public OpenIndexClusterStateUpdateRequest {
+        Objects.requireNonNull(masterNodeTimeout);
+        Objects.requireNonNull(ackTimeout);
+        Objects.requireNonNull(waitForActiveShards);
+        Objects.requireNonNull(indices);
     }
 }

+ 18 - 15
server/src/main/java/org/elasticsearch/action/admin/indices/open/TransportOpenIndexAction.java

@@ -90,23 +90,26 @@ public class TransportOpenIndexAction extends TransportMasterNodeAction<OpenInde
             listener.onResponse(new OpenIndexResponse(true, true));
             return;
         }
-        OpenIndexClusterStateUpdateRequest updateRequest = new OpenIndexClusterStateUpdateRequest().ackTimeout(request.ackTimeout())
-            .masterNodeTimeout(request.masterNodeTimeout())
-            .indices(concreteIndices)
-            .waitForActiveShards(request.waitForActiveShards());
 
-        indexStateService.openIndices(updateRequest, new ActionListener<>() {
+        indexStateService.openIndices(
+            new OpenIndexClusterStateUpdateRequest(
+                request.masterNodeTimeout(),
+                request.ackTimeout(),
+                request.waitForActiveShards(),
+                concreteIndices
+            ),
+            new ActionListener<>() {
+                @Override
+                public void onResponse(ShardsAcknowledgedResponse response) {
+                    listener.onResponse(new OpenIndexResponse(response.isAcknowledged(), response.isShardsAcknowledged()));
+                }
 
-            @Override
-            public void onResponse(ShardsAcknowledgedResponse response) {
-                listener.onResponse(new OpenIndexResponse(response.isAcknowledged(), response.isShardsAcknowledged()));
+                @Override
+                public void onFailure(Exception t) {
+                    logger.debug(() -> "failed to open indices [" + Arrays.toString(concreteIndices) + "]", t);
+                    listener.onFailure(t);
+                }
             }
-
-            @Override
-            public void onFailure(Exception t) {
-                logger.debug(() -> "failed to open indices [" + Arrays.toString(concreteIndices) + "]", t);
-                listener.onFailure(t);
-            }
-        });
+        );
     }
 }

+ 6 - 4
x-pack/plugin/frozen-indices/src/main/java/org/elasticsearch/xpack/frozen/action/TransportFreezeIndexAction.java

@@ -145,10 +145,12 @@ public final class TransportFreezeIndexAction extends TransportMasterNodeAction<
         submitUnbatchedTask(
             "toggle-frozen-settings",
             new AckedClusterStateUpdateTask(Priority.URGENT, request, listener.delegateFailure((delegate, acknowledgedResponse) -> {
-                OpenIndexClusterStateUpdateRequest updateRequest = new OpenIndexClusterStateUpdateRequest().ackTimeout(request.ackTimeout())
-                    .masterNodeTimeout(request.masterNodeTimeout())
-                    .indices(concreteIndices)
-                    .waitForActiveShards(request.waitForActiveShards());
+                OpenIndexClusterStateUpdateRequest updateRequest = new OpenIndexClusterStateUpdateRequest(
+                    request.masterNodeTimeout(),
+                    request.ackTimeout(),
+                    request.waitForActiveShards(),
+                    concreteIndices
+                );
                 indexStateService.openIndices(
                     updateRequest,
                     delegate.safeMap(