Skip to content

Commit fa87243

Browse files
committed
Refactored Code
Signed-off-by: Tarun-kishore <[email protected]>
1 parent ad54a59 commit fa87243

File tree

5 files changed

+67
-29
lines changed

5 files changed

+67
-29
lines changed

src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/engine/states/creation/CreatingState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ object CreatingState : State {
4141
if (job.creation == null) {
4242
log.warn("Policy creation config becomes null before trying to create snapshot. Reset.")
4343
return SMResult.Fail(
44-
metadataBuilder, WorkflowType.CREATION,
44+
metadataBuilder.resetCreation(), WorkflowType.CREATION, true,
4545
)
4646
}
4747

src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/engine/states/deletion/DeletingState.kt

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,12 @@ object DeletingState : State {
6464
val policySnapshots = getSnapshotsRes.snapshots
6565

6666
// Get pattern-based snapshots if pattern is specified
67-
val patternSnapshots = if (job.deletion.snapshotPattern != null) {
68-
try {
69-
client.getSnapshots(job.deletion.snapshotPattern, repository)
70-
} catch (ex: Exception) {
71-
log.error("Caught exception while getting snapshots for pattern ${job.deletion.snapshotPattern}.", ex)
72-
metadataBuilder.setLatestExecution(
73-
status = SMMetadata.LatestExecution.Status.RETRYING,
74-
message = "Caught exception while getting snapshots for pattern ${job.deletion.snapshotPattern}.",
75-
cause = ex,
76-
)
77-
return SMResult.Fail(metadataBuilder, WorkflowType.DELETION)
78-
}
79-
} else {
80-
emptyList()
67+
val patternSnapshotsResult = DeletionStateUtils.getPatternSnapshots(context, metadataBuilder)
68+
if (patternSnapshotsResult == null) {
69+
return SMResult.Fail(metadataBuilder, WorkflowType.DELETION)
8170
}
71+
val (patternSnapshots, updatedMetadataBuilder) = patternSnapshotsResult
72+
metadataBuilder = updatedMetadataBuilder
8273

8374
// Combine both sets of snapshots, removing duplicates by snapshot name
8475
val allSnapshots = (policySnapshots + patternSnapshots)

src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/engine/states/deletion/DeletionFinishedState.kt

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,12 @@ object DeletionFinishedState : State {
5454
val policySnapshots = getSnapshotsRes.snapshots
5555

5656
// Get pattern-based snapshots if pattern is specified
57-
val patternSnapshots = if (job.deletion?.snapshotPattern != null) {
58-
try {
59-
client.getSnapshots(job.deletion.snapshotPattern, repository)
60-
} catch (ex: Exception) {
61-
log.error("Caught exception while getting snapshots for pattern ${job.deletion.snapshotPattern}.", ex)
62-
metadataBuilder.setLatestExecution(
63-
status = SMMetadata.LatestExecution.Status.RETRYING,
64-
message = "Caught exception while getting snapshots for pattern ${job.deletion.snapshotPattern}.",
65-
cause = ex,
66-
)
67-
return SMResult.Fail(metadataBuilder, WorkflowType.DELETION)
68-
}
69-
} else {
70-
emptyList()
57+
val patternSnapshotsResult = DeletionStateUtils.getPatternSnapshots(context, metadataBuilder)
58+
if (patternSnapshotsResult == null) {
59+
return SMResult.Fail(metadataBuilder, WorkflowType.DELETION)
7160
}
61+
val (patternSnapshots, updatedMetadataBuilder) = patternSnapshotsResult
62+
metadataBuilder = updatedMetadataBuilder
7263

7364
// Combine both sets of snapshots, removing duplicates by snapshot name
7465
val getSnapshots = (policySnapshots + patternSnapshots).distinctBy { it.snapshotId().name }
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.opensearch.indexmanagement.snapshotmanagement.engine.states.deletion
7+
8+
import org.opensearch.indexmanagement.snapshotmanagement.engine.SMStateMachine
9+
import org.opensearch.indexmanagement.snapshotmanagement.getSnapshots
10+
import org.opensearch.indexmanagement.snapshotmanagement.model.SMMetadata
11+
import org.opensearch.snapshots.SnapshotInfo
12+
13+
object DeletionStateUtils {
14+
15+
/**
16+
* Get pattern-based snapshots if pattern is specified
17+
*
18+
* @param context The state machine context
19+
* @param metadataBuilder The current metadata builder
20+
* @return A pair containing the pattern snapshots list and updated metadata builder, or null if failed
21+
*/
22+
suspend fun getPatternSnapshots(
23+
context: SMStateMachine,
24+
metadataBuilder: SMMetadata.Builder,
25+
): Pair<List<SnapshotInfo>, SMMetadata.Builder>? {
26+
val client = context.client
27+
val job = context.job
28+
val log = context.log
29+
val repository = job.snapshotConfig["repository"] as String
30+
31+
return if (job.deletion?.snapshotPattern != null) {
32+
try {
33+
val patternSnapshots = client.getSnapshots(job.deletion.snapshotPattern, repository)
34+
Pair(patternSnapshots, metadataBuilder)
35+
} catch (ex: Exception) {
36+
log.error("Caught exception while getting snapshots for pattern ${job.deletion.snapshotPattern}.", ex)
37+
val updatedMetadataBuilder = metadataBuilder.setLatestExecution(
38+
status = SMMetadata.LatestExecution.Status.RETRYING,
39+
message = "Caught exception while getting snapshots for pattern ${job.deletion.snapshotPattern}.",
40+
cause = ex,
41+
)
42+
null
43+
}
44+
} else {
45+
Pair(emptyList(), metadataBuilder)
46+
}
47+
}
48+
}

src/main/kotlin/org/opensearch/indexmanagement/snapshotmanagement/model/SMMetadata.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,14 @@ data class SMMetadata(
510510
return this
511511
}
512512

513+
fun resetCreation(): Builder {
514+
metadata =
515+
metadata.copy(
516+
creation = null,
517+
)
518+
return this
519+
}
520+
513521
// Use this **first** to update metadata, because it depends on started field
514522
// So if you change started first, this could behave wrongly
515523
@Suppress("LongParameterList")

0 commit comments

Comments
 (0)