From 72b77d0c71398a9ebeb5a9a85ea8e8f4d364798b Mon Sep 17 00:00:00 2001 From: Nishtha Mehrotra Date: Tue, 7 Jan 2025 12:17:28 -0800 Subject: [PATCH] Delete workflow metadata on deleting workflow --- .../transport/TransportDeleteWorkflowAction.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportDeleteWorkflowAction.kt b/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportDeleteWorkflowAction.kt index 8fb2533fb..38af085cb 100644 --- a/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportDeleteWorkflowAction.kt +++ b/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportDeleteWorkflowAction.kt @@ -137,11 +137,12 @@ class TransportDeleteWorkflowAction @Inject constructor( if (canDelete) { val delegateMonitorIds = (workflow.inputs[0] as CompositeInput).getMonitorIds() var deletableMonitors = listOf() + val delegateMonitors = getDeletableDelegates(workflowId, delegateMonitorIds, user) // User can only delete the delegate monitors only in the case if all monitors can be deleted // if there are monitors in this workflow that are referenced in other workflows, we cannot delete the monitors. // We will not partially delete monitors. we delete them all or fail the request. if (deleteDelegateMonitors == true) { - deletableMonitors = getDeletableDelegates(workflowId, delegateMonitorIds, user) + deletableMonitors = delegateMonitors val monitorsDiff = delegateMonitorIds.toMutableList() monitorsDiff.removeAll(deletableMonitors.map { it.id }) @@ -168,10 +169,11 @@ class TransportDeleteWorkflowAction @Inject constructor( val failedMonitorIds = tryDeletingMonitors(deletableMonitors, RefreshPolicy.IMMEDIATE) // Update delete workflow response deleteWorkflowResponse.nonDeletedMonitors = failedMonitorIds - // Delete monitors workflow metadata - // Monitor metadata will be in workflowId-monitorId-metadata format - metadataIdsToDelete.addAll(deletableMonitors.map { MonitorMetadata.getId(it, workflowMetadataId) }) } + + // Delete monitors workflow metadata + // Monitor metadata will be in workflowId-monitorId-metadata format + metadataIdsToDelete.addAll(delegateMonitors.map { MonitorMetadata.getId(it, workflowMetadataId) }) try { // Delete the monitors workflow metadata val deleteMonitorWorkflowMetadataResponse: BulkByScrollResponse = client.suspendUntil {