From 36780383b66143aa8573d3ae789fdb58a80fd218 Mon Sep 17 00:00:00 2001 From: AWSHurneyt Date: Thu, 29 Jun 2023 11:09:14 -0700 Subject: [PATCH 1/2] Fixed a bug in the search monitor API when which prevent alert counts from being returned. Signed-off-by: AWSHurneyt --- .../alerting/transport/TransportSearchMonitorAction.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportSearchMonitorAction.kt b/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportSearchMonitorAction.kt index 61713b128..fb51a7220 100644 --- a/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportSearchMonitorAction.kt +++ b/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportSearchMonitorAction.kt @@ -13,6 +13,7 @@ import org.opensearch.action.support.ActionFilters import org.opensearch.action.support.HandledTransportAction import org.opensearch.alerting.action.SearchMonitorAction import org.opensearch.alerting.action.SearchMonitorRequest +import org.opensearch.alerting.alerts.AlertIndices.Companion.ALL_ALERT_INDEX_PATTERN import org.opensearch.alerting.opensearchapi.addFilter import org.opensearch.alerting.settings.AlertingSettings import org.opensearch.alerting.util.AlertingException @@ -54,7 +55,13 @@ class TransportSearchMonitorAction @Inject constructor( val searchSourceBuilder = searchMonitorRequest.searchRequest.source() val queryBuilder = if (searchSourceBuilder.query() == null) BoolQueryBuilder() else QueryBuilders.boolQuery().must(searchSourceBuilder.query()) - queryBuilder.filter(QueryBuilders.existsQuery(Monitor.MONITOR_TYPE)) + + if (searchMonitorRequest.searchRequest.indices().size == 1 && + !searchMonitorRequest.searchRequest.indices().contains(ALL_ALERT_INDEX_PATTERN) + ) { + queryBuilder.filter(QueryBuilders.existsQuery(Monitor.MONITOR_TYPE)) + } + searchSourceBuilder.query(queryBuilder) .seqNoAndPrimaryTerm(true) .version(true) From 83ceb6a28d87d8079df52bdaea76410cccb5fc9d Mon Sep 17 00:00:00 2001 From: AWSHurneyt Date: Thu, 6 Jul 2023 17:50:53 -0700 Subject: [PATCH 2/2] Removed redundant code. Signed-off-by: AWSHurneyt --- .../transport/TransportSearchMonitorAction.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportSearchMonitorAction.kt b/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportSearchMonitorAction.kt index fb51a7220..d5c2b5687 100644 --- a/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportSearchMonitorAction.kt +++ b/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportSearchMonitorAction.kt @@ -22,6 +22,7 @@ import org.opensearch.cluster.service.ClusterService import org.opensearch.common.inject.Inject import org.opensearch.common.settings.Settings import org.opensearch.commons.alerting.model.Monitor +import org.opensearch.commons.alerting.model.ScheduledJob import org.opensearch.commons.authuser.User import org.opensearch.index.query.BoolQueryBuilder import org.opensearch.index.query.ExistsQueryBuilder @@ -53,12 +54,14 @@ class TransportSearchMonitorAction @Inject constructor( override fun doExecute(task: Task, searchMonitorRequest: SearchMonitorRequest, actionListener: ActionListener) { val searchSourceBuilder = searchMonitorRequest.searchRequest.source() - val queryBuilder = if (searchSourceBuilder.query() == null) BoolQueryBuilder() - else QueryBuilders.boolQuery().must(searchSourceBuilder.query()) + .seqNoAndPrimaryTerm(true) + .version(true) + val queryBuilder = QueryBuilders.boolQuery().must(searchSourceBuilder.query()) - if (searchMonitorRequest.searchRequest.indices().size == 1 && - !searchMonitorRequest.searchRequest.indices().contains(ALL_ALERT_INDEX_PATTERN) - ) { + // The SearchMonitor API supports one 'index' parameter of either the SCHEDULED_JOBS_INDEX or ALL_ALERT_INDEX_PATTERN. + // When querying the ALL_ALERT_INDEX_PATTERN, we don't want to check whether the MONITOR_TYPE field exists + // because we're querying alert indexes. + if (searchMonitorRequest.searchRequest.indices().contains(ScheduledJob.SCHEDULED_JOBS_INDEX)) { queryBuilder.filter(QueryBuilders.existsQuery(Monitor.MONITOR_TYPE)) }