Skip to content

Commit 80660a5

Browse files
authored
add version checks in serde flows for Fan out request changes since 2.15 (#811)
Signed-off-by: Surya Sashank Nistala <[email protected]>
1 parent 71ad5b7 commit 80660a5

File tree

4 files changed

+37
-15
lines changed

4 files changed

+37
-15
lines changed

src/main/kotlin/org/opensearch/commons/alerting/model/DocLevelMonitorInput.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.opensearch.commons.alerting.model
22

3+
import org.opensearch.Version
34
import org.opensearch.common.CheckedFunction
45
import org.opensearch.core.ParseField
56
import org.opensearch.core.common.io.stream.StreamInput
@@ -23,7 +24,7 @@ data class DocLevelMonitorInput(
2324
sin.readString(), // description
2425
sin.readStringList(), // indices
2526
sin.readList(::DocLevelQuery), // docLevelQueries
26-
sin.readOptionalBoolean() // fanoutEnabled
27+
if (sin.version.onOrAfter(Version.V_2_15_0)) sin.readOptionalBoolean() else true // fanoutEnabled
2728
)
2829

2930
override fun asTemplateArg(): Map<String, Any> {
@@ -43,7 +44,9 @@ data class DocLevelMonitorInput(
4344
out.writeString(description)
4445
out.writeStringCollection(indices)
4546
out.writeCollection(queries)
46-
out.writeOptionalBoolean(fanoutEnabled)
47+
if (out.version.onOrAfter(Version.V_2_15_0)) {
48+
out.writeOptionalBoolean(fanoutEnabled)
49+
}
4750
}
4851

4952
override fun toXContent(builder: XContentBuilder, params: ToXContent.Params): XContentBuilder {

src/main/kotlin/org/opensearch/commons/alerting/model/IndexExecutionContext.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package org.opensearch.commons.alerting.model
77

8+
import org.opensearch.Version
89
import org.opensearch.core.common.io.stream.StreamInput
910
import org.opensearch.core.common.io.stream.StreamOutput
1011
import org.opensearch.core.common.io.stream.Writeable
@@ -36,7 +37,7 @@ data class IndexExecutionContext(
3637
concreteIndexNames = sin.readStringList(),
3738
conflictingFields = sin.readStringList(),
3839
docIds = sin.readOptionalStringList(),
39-
findingIds = sin.readOptionalStringList()
40+
findingIds = if (sin.version.onOrAfter(Version.V_2_15_0)) sin.readOptionalStringList() else emptyList()
4041
)
4142

4243
override fun writeTo(out: StreamOutput?) {
@@ -49,7 +50,9 @@ data class IndexExecutionContext(
4950
out.writeStringCollection(concreteIndexNames)
5051
out.writeStringCollection(conflictingFields)
5152
out.writeOptionalStringCollection(docIds)
52-
out.writeOptionalStringCollection(findingIds)
53+
if (out.version.onOrAfter(Version.V_2_15_0)) {
54+
out.writeOptionalStringCollection(findingIds)
55+
}
5356
}
5457

5558
override fun toXContent(builder: XContentBuilder?, params: ToXContent.Params?): XContentBuilder {

src/main/kotlin/org/opensearch/commons/alerting/model/Monitor.kt

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.opensearch.commons.alerting.model
22

3+
import org.opensearch.Version
34
import org.opensearch.common.CheckedFunction
45
import org.opensearch.commons.alerting.model.remote.monitors.RemoteMonitorTrigger
56
import org.opensearch.commons.alerting.util.IndexUtils.Companion.MONITOR_MAX_INPUTS
@@ -112,8 +113,16 @@ data class Monitor(
112113
} else {
113114
DataSources()
114115
},
115-
deleteQueryIndexInEveryRun = sin.readOptionalBoolean(),
116-
shouldCreateSingleAlertForFindings = sin.readOptionalBoolean(),
116+
deleteQueryIndexInEveryRun = if (sin.version.onOrAfter(Version.V_2_15_0)) {
117+
sin.readOptionalBoolean()
118+
} else {
119+
false
120+
},
121+
shouldCreateSingleAlertForFindings = if (sin.version.onOrAfter(Version.V_2_15_0)) {
122+
sin.readOptionalBoolean()
123+
} else {
124+
false
125+
},
117126
owner = sin.readOptionalString()
118127
)
119128

@@ -226,8 +235,12 @@ data class Monitor(
226235
out.writeMap(uiMetadata)
227236
out.writeBoolean(dataSources != null) // for backward compatibility with pre-existing monitors which don't have datasources field
228237
dataSources.writeTo(out)
229-
out.writeOptionalBoolean(deleteQueryIndexInEveryRun)
230-
out.writeOptionalBoolean(shouldCreateSingleAlertForFindings)
238+
if (out.version.onOrAfter(Version.V_2_15_0)) {
239+
out.writeOptionalBoolean(deleteQueryIndexInEveryRun)
240+
}
241+
if (out.version.onOrAfter(Version.V_2_15_0)) {
242+
out.writeOptionalBoolean(shouldCreateSingleAlertForFindings)
243+
}
231244
out.writeOptionalString(owner)
232245
}
233246

src/main/kotlin/org/opensearch/commons/alerting/model/WorkflowRunContext.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package org.opensearch.commons.alerting.model
77

8+
import org.opensearch.Version
89
import org.opensearch.core.common.io.stream.StreamInput
910
import org.opensearch.core.common.io.stream.StreamOutput
1011
import org.opensearch.core.common.io.stream.Writeable
@@ -28,12 +29,12 @@ data class WorkflowRunContext(
2829
}
2930

3031
constructor(sin: StreamInput) : this(
31-
sin.readString(),
32-
sin.readString(),
33-
sin.readOptionalString(),
34-
sin.readMap() as Map<String, List<String>>,
35-
sin.readBoolean(),
36-
sin.readOptionalStringList()
32+
workflowId = sin.readString(),
33+
workflowMetadataId = sin.readString(),
34+
chainedMonitorId = sin.readOptionalString(),
35+
matchingDocIdsPerIndex = sin.readMap() as Map<String, List<String>>,
36+
auditDelegateMonitorAlerts = sin.readBoolean(),
37+
findingIds = if (sin.version.onOrAfter(Version.V_2_15_0)) sin.readOptionalStringList() else emptyList()
3738
)
3839

3940
override fun writeTo(out: StreamOutput) {
@@ -42,7 +43,9 @@ data class WorkflowRunContext(
4243
out.writeOptionalString(chainedMonitorId)
4344
out.writeMap(matchingDocIdsPerIndex)
4445
out.writeBoolean(auditDelegateMonitorAlerts)
45-
out.writeOptionalStringCollection(findingIds)
46+
if (out.version.onOrAfter(Version.V_2_15_0)) {
47+
out.writeOptionalStringCollection(findingIds)
48+
}
4649
}
4750

4851
override fun toXContent(builder: XContentBuilder, params: ToXContent.Params?): XContentBuilder {

0 commit comments

Comments
 (0)