Skip to content

Commit d4ee795

Browse files
harshitakaushik-devHarshita Kaushik
and
Harshita Kaushik
authored
Step Metadata Update on Index Rollover Timeout (#1174)
Co-authored-by: Harshita Kaushik <[email protected]>
1 parent acbc930 commit d4ee795

File tree

3 files changed

+32
-11
lines changed
  • spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement
  • src

3 files changed

+32
-11
lines changed

spi/src/main/kotlin/org.opensearch.indexmanagement.spi/indexstatemanagement/Step.kt

+1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ abstract class Step(val name: String, val isSafeToDisableOn: Boolean = true) {
5656
CONDITION_NOT_MET("condition_not_met"),
5757
FAILED("failed"),
5858
COMPLETED("completed"),
59+
TIMED_OUT("timed_out"),
5960
;
6061

6162
override fun toString(): String {

src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexRunner.kt

+11-6
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ import org.opensearch.indexmanagement.spi.indexstatemanagement.model.ManagedInde
9191
import org.opensearch.indexmanagement.spi.indexstatemanagement.model.PolicyRetryInfoMetaData
9292
import org.opensearch.indexmanagement.spi.indexstatemanagement.model.StateMetaData
9393
import org.opensearch.indexmanagement.spi.indexstatemanagement.model.StepContext
94+
import org.opensearch.indexmanagement.spi.indexstatemanagement.model.StepMetaData
9495
import org.opensearch.jobscheduler.spi.JobExecutionContext
9596
import org.opensearch.jobscheduler.spi.LockModel
9697
import org.opensearch.jobscheduler.spi.ScheduledJobParameter
@@ -330,14 +331,18 @@ object ManagedIndexRunner :
330331
if (action?.hasTimedOut(currentActionMetaData) == true) {
331332
val info = mapOf("message" to "Action timed out")
332333
logger.error("Action=${action.type} has timed out")
333-
val updated =
334-
updateManagedIndexMetaData(
335-
managedIndexMetaData
336-
.copy(actionMetaData = currentActionMetaData?.copy(failed = true), info = info),
337-
)
334+
335+
val updatedIndexMetaData = managedIndexMetaData.copy(
336+
actionMetaData = currentActionMetaData?.copy(failed = true),
337+
stepMetaData = step?.let { StepMetaData(it.name, System.currentTimeMillis(), Step.StepStatus.TIMED_OUT) },
338+
info = info,
339+
)
340+
341+
val updated = updateManagedIndexMetaData(updatedIndexMetaData)
342+
338343
if (updated.metadataSaved) {
339344
disableManagedIndexConfig(managedIndexConfig)
340-
publishErrorNotification(policy, managedIndexMetaData)
345+
publishErrorNotification(policy, updatedIndexMetaData)
341346
}
342347
return
343348
}

src/test/kotlin/org/opensearch/indexmanagement/indexstatemanagement/action/ActionTimeoutIT.kt

+20-5
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ package org.opensearch.indexmanagement.indexstatemanagement.action
88
import org.opensearch.indexmanagement.indexstatemanagement.IndexStateManagementRestTestCase
99
import org.opensearch.indexmanagement.indexstatemanagement.step.open.AttemptOpenStep
1010
import org.opensearch.indexmanagement.indexstatemanagement.step.rollover.AttemptRolloverStep
11+
import org.opensearch.indexmanagement.spi.indexstatemanagement.Step
1112
import org.opensearch.indexmanagement.spi.indexstatemanagement.model.ActionMetaData
1213
import org.opensearch.indexmanagement.spi.indexstatemanagement.model.ManagedIndexMetaData
14+
import org.opensearch.indexmanagement.spi.indexstatemanagement.model.StepMetaData
1315
import org.opensearch.indexmanagement.waitFor
1416
import java.time.Instant
1517
import java.util.Locale
@@ -22,9 +24,9 @@ class ActionTimeoutIT : IndexStateManagementRestTestCase() {
2224
val policyID = "${testIndexName}_testPolicyName_1"
2325
val testPolicy =
2426
"""
25-
{"policy":{"description":"Default policy","default_state":"rolloverstate","states":[
26-
{"name":"rolloverstate","actions":[{"timeout":"1s","rollover":{"min_doc_count":100}}],
27-
"transitions":[]}]}}
27+
{"policy":{"description":"Default policy","default_state":"rolloverstate","states":[
28+
{"name":"rolloverstate","actions":[{"timeout":"1s","rollover":{"min_doc_count":100}}],
29+
"transitions":[]}]}}
2830
""".trimIndent()
2931

3032
createPolicyJson(testPolicy, policyID)
@@ -60,11 +62,24 @@ class ActionTimeoutIT : IndexStateManagementRestTestCase() {
6062
fun(actionMetaDataMap: Any?): Boolean =
6163
assertActionEquals(
6264
ActionMetaData(
63-
name = RolloverAction.name, startTime = Instant.now().toEpochMilli(), index = 0,
64-
failed = true, consumedRetries = 0, lastRetryTime = null, actionProperties = null,
65+
name = RolloverAction.name,
66+
startTime = Instant.now().toEpochMilli(),
67+
index = 0,
68+
failed = true,
69+
consumedRetries = 0,
70+
lastRetryTime = null,
71+
actionProperties = null,
6572
),
6673
actionMetaDataMap,
6774
),
75+
StepMetaData.STEP to
76+
fun(stepMetaDataMap: Any?): Boolean =
77+
assertStepEquals(
78+
StepMetaData(
79+
"attempt_rollover", Instant.now().toEpochMilli(), Step.StepStatus.TIMED_OUT,
80+
),
81+
stepMetaDataMap,
82+
),
6883
),
6984
),
7085
getExplainMap(indexName),

0 commit comments

Comments
 (0)