@@ -151,16 +151,11 @@ public Tuple<ClusterState, ClusterStateAckListener> executeTask(
151151 updateSettingsTask .settingsOverrides ,
152152 clusterState
153153 );
154- final ClusterState updatedClusterState ;
155- if (updateSettingsTask .dryRun ) {
156- updatedClusterState = clusterState ;
157- } else {
158- ProjectMetadata projectMetadata = clusterState .metadata ().getProject (updateSettingsTask .projectId );
159- ProjectMetadata .Builder projectMetadataBuilder = ProjectMetadata .builder (projectMetadata );
160- projectMetadataBuilder .removeDataStream (updateSettingsTask .dataStreamName );
161- projectMetadataBuilder .put (dataStream );
162- updatedClusterState = ClusterState .builder (clusterState ).putProjectMetadata (projectMetadataBuilder ).build ();
163- }
154+ ProjectMetadata projectMetadata = clusterState .metadata ().getProject (updateSettingsTask .projectId );
155+ ProjectMetadata .Builder projectMetadataBuilder = ProjectMetadata .builder (projectMetadata );
156+ projectMetadataBuilder .removeDataStream (updateSettingsTask .dataStreamName );
157+ projectMetadataBuilder .put (dataStream );
158+ ClusterState updatedClusterState = ClusterState .builder (clusterState ).putProjectMetadata (projectMetadataBuilder ).build ();
164159 return new Tuple <>(updatedClusterState , updateSettingsTask );
165160 }
166161 };
@@ -415,16 +410,33 @@ public void updateSettings(
415410 boolean dryRun ,
416411 ActionListener <DataStream > listener
417412 ) {
418- UpdateSettingsTask updateSettingsTask = new UpdateSettingsTask (
419- projectId ,
420- dataStreamName ,
421- settingsOverrides ,
422- dryRun ,
423- clusterService ,
424- ackTimeout ,
425- listener
426- );
427- updateSettingsTaskQueue .submitTask ("updating settings on data stream" , updateSettingsTask , masterNodeTimeout );
413+ if (dryRun ) {
414+ /*
415+ * If this is a dry run, we'll do the settings validation and apply the changes to the data stream locally, but we won't run
416+ * the task that actually updates the cluster state.
417+ */
418+ try {
419+ DataStream updatedDataStream = createDataStreamForUpdatedDataStreamSettings (
420+ projectId ,
421+ dataStreamName ,
422+ settingsOverrides ,
423+ clusterService .state ()
424+ );
425+ listener .onResponse (updatedDataStream );
426+ } catch (Exception e ) {
427+ listener .onFailure (e );
428+ }
429+ } else {
430+ UpdateSettingsTask updateSettingsTask = new UpdateSettingsTask (
431+ projectId ,
432+ dataStreamName ,
433+ settingsOverrides ,
434+ clusterService ,
435+ ackTimeout ,
436+ listener
437+ );
438+ updateSettingsTaskQueue .submitTask ("updating settings on data stream" , updateSettingsTask , masterNodeTimeout );
439+ }
428440 }
429441
430442 /*
@@ -550,8 +562,8 @@ private static IndexAbstraction validateIndex(ProjectMetadata project, String in
550562 * Removes the given data stream and their backing indices from the Project State.
551563 *
552564 * @param projectState The project state
553- * @param dataStreams The data streams to remove
554- * @param settings The settings
565+ * @param dataStreams The data streams to remove
566+ * @param settings The settings
555567 * @return The updated Project State
556568 */
557569 public static ClusterState deleteDataStreams (ProjectState projectState , Set <DataStream > dataStreams , Settings settings ) {
@@ -707,13 +719,11 @@ static class UpdateSettingsTask extends AckedBatchedClusterStateUpdateTask {
707719 final ProjectId projectId ;
708720 private final String dataStreamName ;
709721 private final Settings settingsOverrides ;
710- private final boolean dryRun ;
711722
712723 UpdateSettingsTask (
713724 ProjectId projectId ,
714725 String dataStreamName ,
715726 Settings settingsOverrides ,
716- boolean dryRun ,
717727 ClusterService clusterService ,
718728 TimeValue ackTimeout ,
719729 ActionListener <DataStream > listener
@@ -728,7 +738,6 @@ static class UpdateSettingsTask extends AckedBatchedClusterStateUpdateTask {
728738 this .projectId = projectId ;
729739 this .dataStreamName = dataStreamName ;
730740 this .settingsOverrides = settingsOverrides ;
731- this .dryRun = dryRun ;
732741 }
733742 }
734743}
0 commit comments