Skip to content

Commit

Permalink
Defer Reroute When Autocreating Datastream (#82412)
Browse files Browse the repository at this point in the history
Defer reroute on autocreate DS. Follow-up to #82159.

relates #77466
  • Loading branch information
original-brownbear authored Jan 11, 2022
1 parent 506a0bb commit 854b9e6
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,8 @@ public ClusterState execute(ClusterState currentState) throws Exception {
request.index(),
dataStreamDescriptor,
request.masterNodeTimeout(),
request.timeout()
request.timeout(),
false
);
ClusterState clusterState = metadataCreateDataStreamService.createDataStream(createRequest, currentState);
indexNameRef.set(clusterState.metadata().dataStreams().get(request.index()).getIndices().get(0).getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,33 +97,37 @@ public ClusterState createDataStream(CreateDataStreamClusterStateUpdateRequest r
public static final class CreateDataStreamClusterStateUpdateRequest extends ClusterStateUpdateRequest<
CreateDataStreamClusterStateUpdateRequest> {

private final boolean performReroute;
private final String name;
private final long startTime;
private final SystemDataStreamDescriptor descriptor;

public CreateDataStreamClusterStateUpdateRequest(String name) {
this(name, System.currentTimeMillis(), null, TimeValue.ZERO, TimeValue.ZERO);
this(name, System.currentTimeMillis(), null, TimeValue.ZERO, TimeValue.ZERO, true);
}

public CreateDataStreamClusterStateUpdateRequest(
String name,
SystemDataStreamDescriptor systemDataStreamDescriptor,
TimeValue masterNodeTimeout,
TimeValue timeout
TimeValue timeout,
boolean performReroute
) {
this(name, System.currentTimeMillis(), systemDataStreamDescriptor, masterNodeTimeout, timeout);
this(name, System.currentTimeMillis(), systemDataStreamDescriptor, masterNodeTimeout, timeout, performReroute);
}

public CreateDataStreamClusterStateUpdateRequest(
String name,
long startTime,
SystemDataStreamDescriptor systemDataStreamDescriptor,
TimeValue masterNodeTimeout,
TimeValue timeout
TimeValue timeout,
boolean performReroute
) {
this.name = name;
this.startTime = startTime;
this.descriptor = systemDataStreamDescriptor;
this.performReroute = performReroute;
masterNodeTimeout(masterNodeTimeout);
ackTimeout(timeout);
}
Expand All @@ -132,6 +136,10 @@ public boolean isSystem() {
return descriptor != null;
}

public boolean performReroute() {
return performReroute;
}

public SystemDataStreamDescriptor getSystemDataStreamDescriptor() {
return descriptor;
}
Expand Down Expand Up @@ -201,7 +209,10 @@ static ClusterState createDataStream(
"initialize_data_stream",
firstBackingIndexName,
firstBackingIndexName
).dataStreamName(dataStreamName).systemDataStreamDescriptor(systemDataStreamDescriptor).nameResolvedInstant(request.startTime);
).dataStreamName(dataStreamName)
.systemDataStreamDescriptor(systemDataStreamDescriptor)
.nameResolvedInstant(request.startTime)
.performReroute(request.performReroute());

if (isSystem) {
createIndexRequest.settings(SystemIndexDescriptor.DEFAULT_SETTINGS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,8 @@ public void testCreateSystemDataStream() throws Exception {
dataStreamName,
systemDataStreamDescriptor(),
TimeValue.MAX_VALUE,
TimeValue.ZERO
TimeValue.ZERO,
true
);
ClusterState newState = MetadataCreateDataStreamService.createDataStream(metadataCreateIndexService, cs, req);
assertThat(newState.metadata().dataStreams().size(), equalTo(1));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ protected void masterOperation(
request.getStartTime(),
systemDataStreamDescriptor,
request.masterNodeTimeout(),
request.timeout()
request.timeout(),
true
);
metadataCreateDataStreamService.createDataStream(updateRequest, listener);
}
Expand Down

0 comments on commit 854b9e6

Please sign in to comment.