Skip to content

Commit a1bf5fb

Browse files
authored
fix number of shards of query index to 0 and auto expand replicas to 0-1 (#1702)
Signed-off-by: Subhobrata Dey <[email protected]>
1 parent 9097275 commit a1bf5fb

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

alerting/src/main/kotlin/org/opensearch/alerting/util/DocLevelMonitorQueries.kt

+3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import org.opensearch.alerting.MonitorRunnerService.monitorCtx
3131
import org.opensearch.alerting.opensearchapi.suspendUntil
3232
import org.opensearch.client.Client
3333
import org.opensearch.cluster.ClusterState
34+
import org.opensearch.cluster.metadata.IndexMetadata
3435
import org.opensearch.cluster.service.ClusterService
3536
import org.opensearch.common.settings.Settings
3637
import org.opensearch.common.unit.TimeValue
@@ -130,6 +131,8 @@ class DocLevelMonitorQueries(private val client: Client, private val clusterServ
130131
.alias(Alias(alias))
131132
.settings(
132133
Settings.builder().put("index.hidden", true)
134+
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, 1)
135+
.put(IndexMetadata.SETTING_AUTO_EXPAND_REPLICAS, "0-1")
133136
.build()
134137
)
135138
return try {

alerting/src/test/kotlin/org/opensearch/alerting/MonitorDataSourcesIT.kt

+59
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import org.opensearch.action.admin.indices.mapping.get.GetMappingsRequest
1818
import org.opensearch.action.admin.indices.mapping.put.PutMappingRequest
1919
import org.opensearch.action.admin.indices.open.OpenIndexRequest
2020
import org.opensearch.action.admin.indices.refresh.RefreshRequest
21+
import org.opensearch.action.admin.indices.settings.get.GetSettingsResponse
2122
import org.opensearch.action.bulk.BulkRequest
2223
import org.opensearch.action.bulk.BulkResponse
2324
import org.opensearch.action.fieldcaps.FieldCapabilitiesRequest
@@ -30,6 +31,7 @@ import org.opensearch.alerting.transport.AlertingSingleNodeTestCase
3031
import org.opensearch.alerting.util.DocLevelMonitorQueries
3132
import org.opensearch.alerting.util.DocLevelMonitorQueries.Companion.INDEX_PATTERN_SUFFIX
3233
import org.opensearch.alerting.workflow.CompositeWorkflowRunner
34+
import org.opensearch.cluster.metadata.IndexMetadata
3335
import org.opensearch.common.settings.Settings
3436
import org.opensearch.common.xcontent.LoggingDeprecationHandler
3537
import org.opensearch.common.xcontent.XContentHelper
@@ -6174,4 +6176,61 @@ class MonitorDataSourcesIT : AlertingSingleNodeTestCase() {
61746176
Assert.assertEquals(completedAlert1.alerts[0].state, Alert.State.COMPLETED)
61756177
Assert.assertTrue(completedAlert1.alerts[0].endTime!! > acknowledgedAlert.alerts[0].lastNotificationTime!!)
61766178
}
6179+
6180+
fun `test query index created with single primary and single replica shard`() {
6181+
val docQuery = DocLevelQuery(query = "test_field:\"us-west-2\"", name = "3", fields = listOf())
6182+
val docLevelInput = DocLevelMonitorInput("description", listOf(index), listOf(docQuery))
6183+
val trigger = randomDocumentLevelTrigger(condition = ALWAYS_RUN)
6184+
var monitor = randomDocumentLevelMonitor(
6185+
inputs = listOf(docLevelInput),
6186+
triggers = listOf(trigger),
6187+
dataSources = DataSources(queryIndex = ".opensearch-alerting-custom-queries")
6188+
)
6189+
val monitorResponse = createMonitor(monitor)
6190+
val testTime = DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now().truncatedTo(MILLIS))
6191+
val testDoc = """{
6192+
"message" : "This is an error from IAD region",
6193+
"test_strict_date_time" : "$testTime",
6194+
"test_field" : "us-west-2"
6195+
}"""
6196+
assertFalse(monitorResponse?.id.isNullOrEmpty())
6197+
monitor = monitorResponse!!.monitor
6198+
indexDoc(index, "1", testDoc)
6199+
val id = monitorResponse.id
6200+
executeMonitor(monitor, id, false)
6201+
6202+
var response: GetSettingsResponse? = getIndexSettings(".opensearch-alerting-custom-queries-000001")
6203+
assertEquals(
6204+
"1",
6205+
response!!.getSetting(
6206+
".opensearch-alerting-custom-queries-000001",
6207+
IndexMetadata.SETTING_NUMBER_OF_SHARDS
6208+
)
6209+
)
6210+
assertEquals(
6211+
"0",
6212+
response.getSetting(
6213+
".opensearch-alerting-custom-queries-000001",
6214+
IndexMetadata.SETTING_NUMBER_OF_REPLICAS
6215+
)
6216+
)
6217+
6218+
executeMonitor(monitor, id, false)
6219+
6220+
response = getIndexSettings(".opensearch-alerting-custom-queries-000001")
6221+
assertEquals(
6222+
"1",
6223+
response!!.getSetting(
6224+
".opensearch-alerting-custom-queries-000001",
6225+
IndexMetadata.SETTING_NUMBER_OF_SHARDS
6226+
)
6227+
)
6228+
assertEquals(
6229+
"0",
6230+
response.getSetting(
6231+
".opensearch-alerting-custom-queries-000001",
6232+
IndexMetadata.SETTING_NUMBER_OF_REPLICAS
6233+
)
6234+
)
6235+
}
61776236
}

alerting/src/test/kotlin/org/opensearch/alerting/transport/AlertingSingleNodeTestCase.kt

+7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import org.opensearch.action.admin.indices.get.GetIndexRequestBuilder
1313
import org.opensearch.action.admin.indices.get.GetIndexResponse
1414
import org.opensearch.action.admin.indices.refresh.RefreshAction
1515
import org.opensearch.action.admin.indices.refresh.RefreshRequest
16+
import org.opensearch.action.admin.indices.settings.get.GetSettingsRequest
17+
import org.opensearch.action.admin.indices.settings.get.GetSettingsResponse
1618
import org.opensearch.action.support.IndicesOptions
1719
import org.opensearch.action.support.WriteRequest
1820
import org.opensearch.alerting.AlertingPlugin
@@ -493,6 +495,11 @@ abstract class AlertingSingleNodeTestCase : OpenSearchSingleNodeTestCase() {
493495
return client().execute(ExecuteWorkflowAction.INSTANCE, request).get()
494496
}
495497

498+
protected fun getIndexSettings(index: String): GetSettingsResponse? {
499+
val request = GetSettingsRequest().indices(index)
500+
return client().admin().indices().getSettings(request).get()
501+
}
502+
496503
override fun nodeSettings(): Settings {
497504
return Settings.builder()
498505
.put(super.nodeSettings())

0 commit comments

Comments
 (0)