@@ -221,45 +221,17 @@ protected void masterOperation(
221221 final String trialRolloverIndexName = trialRolloverNames .rolloverName ();
222222 MetadataCreateIndexService .validateIndexName (trialRolloverIndexName , projectMetadata , projectState .routingTable ());
223223
224- boolean isDataStream = projectMetadata .dataStreams ().containsKey (resolvedRolloverTarget .resource ());
225224 if (rolloverRequest .isLazy ()) {
226- if (isDataStream == false || rolloverRequest .getConditions ().hasConditions ()) {
227- String message ;
228- if (isDataStream ) {
229- message = "Lazy rollover can be used only without any conditions."
230- + " Please remove the conditions from the request body or the query parameter 'lazy'." ;
231- } else if (rolloverRequest .getConditions ().hasConditions () == false ) {
232- message = "Lazy rollover can be applied only on a data stream." + " Please remove the query parameter 'lazy'." ;
233- } else {
234- message = "Lazy rollover can be applied only on a data stream with no conditions."
235- + " Please remove the query parameter 'lazy'." ;
236- }
237- listener .onFailure (new IllegalArgumentException (message ));
238- return ;
239- }
240- if (rolloverRequest .isDryRun () == false ) {
241- metadataDataStreamsService .setRolloverOnWrite (
242- projectState .projectId (),
243- resolvedRolloverTarget .resource (),
244- true ,
245- targetFailureStore ,
246- rolloverRequest .ackTimeout (),
247- rolloverRequest .masterNodeTimeout (),
248- listener .map (
249- response -> new RolloverResponse (
250- trialSourceIndexName ,
251- trialRolloverIndexName ,
252- Map .of (),
253- false ,
254- false ,
255- response .isAcknowledged (),
256- false ,
257- response .isAcknowledged ()
258- )
259- )
260- );
261- return ;
262- }
225+ markForLazyRollover (
226+ rolloverRequest ,
227+ listener ,
228+ projectMetadata ,
229+ resolvedRolloverTarget ,
230+ targetFailureStore ,
231+ trialSourceIndexName ,
232+ trialRolloverIndexName
233+ );
234+ return ;
263235 }
264236
265237 final IndexAbstraction rolloverTargetAbstraction = projectMetadata .getIndicesLookup ().get (resolvedRolloverTarget .resource ());
@@ -353,7 +325,7 @@ protected void masterOperation(
353325 false ,
354326 false ,
355327 false ,
356- rolloverRequest . isLazy ()
328+ false
357329 );
358330
359331 // If this is a dry run, return with the results without invoking a cluster state update
@@ -382,6 +354,58 @@ protected void masterOperation(
382354 );
383355 }
384356
357+ private void markForLazyRollover (
358+ RolloverRequest rolloverRequest ,
359+ ActionListener <RolloverResponse > listener ,
360+ ProjectMetadata projectMetadata ,
361+ ResolvedExpression resolvedRolloverTarget ,
362+ boolean targetFailureStore ,
363+ String trialSourceIndexName ,
364+ String trialRolloverIndexName
365+ ) {
366+ boolean isDataStream = projectMetadata .dataStreams ().containsKey (resolvedRolloverTarget .resource ());
367+ if (isDataStream == false || rolloverRequest .getConditions ().hasConditions ()) {
368+ String message ;
369+ if (isDataStream ) {
370+ message = "Lazy rollover can be used only without any conditions."
371+ + " Please remove the conditions from the request body or the query parameter 'lazy'." ;
372+ } else if (rolloverRequest .getConditions ().hasConditions () == false ) {
373+ message = "Lazy rollover can be applied only on a data stream. Please remove the query parameter 'lazy'." ;
374+ } else {
375+ message = "Lazy rollover can be applied only on a data stream with no conditions."
376+ + " Please remove the query parameter 'lazy'." ;
377+ }
378+ listener .onFailure (new IllegalArgumentException (message ));
379+ return ;
380+ }
381+ if (rolloverRequest .isDryRun ()) {
382+ listener .onResponse (
383+ new RolloverResponse (trialSourceIndexName , trialRolloverIndexName , Map .of (), true , false , false , false , true )
384+ );
385+ return ;
386+ }
387+ metadataDataStreamsService .setRolloverOnWrite (
388+ projectMetadata .id (),
389+ resolvedRolloverTarget .resource (),
390+ true ,
391+ targetFailureStore ,
392+ rolloverRequest .ackTimeout (),
393+ rolloverRequest .masterNodeTimeout (),
394+ listener .map (
395+ response -> new RolloverResponse (
396+ trialSourceIndexName ,
397+ trialRolloverIndexName ,
398+ Map .of (),
399+ false ,
400+ false ,
401+ response .isAcknowledged (),
402+ false ,
403+ true
404+ )
405+ )
406+ );
407+ }
408+
385409 private void initializeFailureStore (
386410 ProjectId projectId ,
387411 RolloverRequest rolloverRequest ,
0 commit comments