Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/changelog/90626.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
pr: 90626
summary: Avoid capturing per-task `RolloverResult`
area: Indices APIs
type: bug
issues:
- 90620
Original file line number Diff line number Diff line change
Expand Up @@ -296,12 +296,11 @@ public ClusterState executeTask(
rolloverRequest.getNewIndexName(),
rolloverRequest.getCreateIndexRequest()
);
final String sourceIndexName = rolloverNames.sourceName();

// Re-evaluate the conditions, now with our final source index name
final Map<String, Boolean> postConditionResults = evaluateConditions(
rolloverRequest.getConditions().values(),
buildStats(currentState.metadata().index(sourceIndexName), rolloverTask.statsResponse())
buildStats(currentState.metadata().index(rolloverNames.sourceName()), rolloverTask.statsResponse())
);

if (rolloverRequest.areConditionsMet(postConditionResults)) {
Expand All @@ -325,11 +324,14 @@ public ClusterState executeTask(
results.add(rolloverResult);
logger.trace("rollover result [{}]", rolloverResult);

final var rolloverIndexName = rolloverResult.rolloverIndexName();
final var sourceIndexName = rolloverResult.sourceIndexName();

rolloverTaskContext.success(() -> {
// Now assuming we have a new state and the name of the rolled over index, we need to wait for the configured number of
// active shards, as well as return the names of the indices that were rolled/created
activeShardsObserver.waitForActiveShards(
new String[] { rolloverResult.rolloverIndexName() },
new String[] { rolloverIndexName },
rolloverRequest.getCreateIndexRequest().waitForActiveShards(),
rolloverRequest.masterNodeTimeout(),
isShardsAcknowledged -> rolloverTask.listener()
Expand All @@ -338,8 +340,8 @@ public ClusterState executeTask(
// Note that we use the actual rollover result for these, because even though we're single threaded,
// it's possible for the rollover names generated before the actual rollover to be different due to
// things like date resolution
rolloverResult.sourceIndexName(),
rolloverResult.rolloverIndexName(),
sourceIndexName,
rolloverIndexName,
postConditionResults,
false,
true,
Expand Down