|
@@ -212,44 +212,17 @@ public class TransportRolloverAction extends TransportMasterNodeAction<RolloverR
|
|
|
final String trialRolloverIndexName = trialRolloverNames.rolloverName();
|
|
|
MetadataCreateIndexService.validateIndexName(trialRolloverIndexName, metadata, clusterState.routingTable());
|
|
|
|
|
|
- boolean isDataStream = metadata.dataStreams().containsKey(resolvedRolloverTarget.resource());
|
|
|
if (rolloverRequest.isLazy()) {
|
|
|
- if (isDataStream == false || rolloverRequest.getConditions().hasConditions()) {
|
|
|
- String message;
|
|
|
- if (isDataStream) {
|
|
|
- message = "Lazy rollover can be used only without any conditions."
|
|
|
- + " Please remove the conditions from the request body or the query parameter 'lazy'.";
|
|
|
- } else if (rolloverRequest.getConditions().hasConditions() == false) {
|
|
|
- message = "Lazy rollover can be applied only on a data stream." + " Please remove the query parameter 'lazy'.";
|
|
|
- } else {
|
|
|
- message = "Lazy rollover can be applied only on a data stream with no conditions."
|
|
|
- + " Please remove the query parameter 'lazy'.";
|
|
|
- }
|
|
|
- listener.onFailure(new IllegalArgumentException(message));
|
|
|
- return;
|
|
|
- }
|
|
|
- if (rolloverRequest.isDryRun() == false) {
|
|
|
- metadataDataStreamsService.setRolloverOnWrite(
|
|
|
- resolvedRolloverTarget.resource(),
|
|
|
- true,
|
|
|
- targetFailureStore,
|
|
|
- rolloverRequest.ackTimeout(),
|
|
|
- rolloverRequest.masterNodeTimeout(),
|
|
|
- listener.map(
|
|
|
- response -> new RolloverResponse(
|
|
|
- trialSourceIndexName,
|
|
|
- trialRolloverIndexName,
|
|
|
- Map.of(),
|
|
|
- false,
|
|
|
- false,
|
|
|
- response.isAcknowledged(),
|
|
|
- false,
|
|
|
- response.isAcknowledged()
|
|
|
- )
|
|
|
- )
|
|
|
- );
|
|
|
- return;
|
|
|
- }
|
|
|
+ markForLazyRollover(
|
|
|
+ rolloverRequest,
|
|
|
+ listener,
|
|
|
+ metadata,
|
|
|
+ resolvedRolloverTarget,
|
|
|
+ targetFailureStore,
|
|
|
+ trialSourceIndexName,
|
|
|
+ trialRolloverIndexName
|
|
|
+ );
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
final IndexAbstraction rolloverTargetAbstraction = clusterState.metadata()
|
|
@@ -345,7 +318,7 @@ public class TransportRolloverAction extends TransportMasterNodeAction<RolloverR
|
|
|
false,
|
|
|
false,
|
|
|
false,
|
|
|
- rolloverRequest.isLazy()
|
|
|
+ false
|
|
|
);
|
|
|
|
|
|
// If this is a dry run, return with the results without invoking a cluster state update
|
|
@@ -373,6 +346,57 @@ public class TransportRolloverAction extends TransportMasterNodeAction<RolloverR
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ private void markForLazyRollover(
|
|
|
+ RolloverRequest rolloverRequest,
|
|
|
+ ActionListener<RolloverResponse> listener,
|
|
|
+ Metadata metadata,
|
|
|
+ ResolvedExpression resolvedRolloverTarget,
|
|
|
+ boolean targetFailureStore,
|
|
|
+ String trialSourceIndexName,
|
|
|
+ String trialRolloverIndexName
|
|
|
+ ) {
|
|
|
+ boolean isDataStream = metadata.dataStreams().containsKey(resolvedRolloverTarget.resource());
|
|
|
+ if (isDataStream == false || rolloverRequest.getConditions().hasConditions()) {
|
|
|
+ String message;
|
|
|
+ if (isDataStream) {
|
|
|
+ message = "Lazy rollover can be used only without any conditions."
|
|
|
+ + " Please remove the conditions from the request body or the query parameter 'lazy'.";
|
|
|
+ } else if (rolloverRequest.getConditions().hasConditions() == false) {
|
|
|
+ message = "Lazy rollover can be applied only on a data stream. Please remove the query parameter 'lazy'.";
|
|
|
+ } else {
|
|
|
+ message = "Lazy rollover can be applied only on a data stream with no conditions."
|
|
|
+ + " Please remove the query parameter 'lazy'.";
|
|
|
+ }
|
|
|
+ listener.onFailure(new IllegalArgumentException(message));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (rolloverRequest.isDryRun()) {
|
|
|
+ listener.onResponse(
|
|
|
+ new RolloverResponse(trialSourceIndexName, trialRolloverIndexName, Map.of(), true, false, false, false, true)
|
|
|
+ );
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ metadataDataStreamsService.setRolloverOnWrite(
|
|
|
+ resolvedRolloverTarget.resource(),
|
|
|
+ true,
|
|
|
+ targetFailureStore,
|
|
|
+ rolloverRequest.ackTimeout(),
|
|
|
+ rolloverRequest.masterNodeTimeout(),
|
|
|
+ listener.map(
|
|
|
+ response -> new RolloverResponse(
|
|
|
+ trialSourceIndexName,
|
|
|
+ trialRolloverIndexName,
|
|
|
+ Map.of(),
|
|
|
+ false,
|
|
|
+ false,
|
|
|
+ response.isAcknowledged(),
|
|
|
+ false,
|
|
|
+ true
|
|
|
+ )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
private void initializeFailureStore(
|
|
|
RolloverRequest rolloverRequest,
|
|
|
ActionListener<RolloverResponse> listener,
|