From f10de7f4d22da703a5a0663b15709c5e37a05a5b Mon Sep 17 00:00:00 2001 From: sonika-shah <58761340+sonika-shah@users.noreply.github.com> Date: Wed, 16 Oct 2024 10:04:58 +0530 Subject: [PATCH] GEN-1662 : Fix - on dashboard soft delete, chart should not be visible (#18283) --- .../service/search/SearchRepository.java | 22 ++++++++++++++++++- .../search/opensearch/OpenSearchClient.java | 3 ++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java index 511ec91cc14..5f30663a2eb 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/SearchRepository.java @@ -528,7 +528,7 @@ public class SearchRepository { } catch (Exception ie) { LOG.error( String.format( - "Issue in Creating new search document for entityType [%s]. Reason[%s], Cause[%s], Stack [%s]", + "Issue in deleting new search document for entityType [%s]. Reason[%s], Cause[%s], Stack [%s]", entityType, ie.getMessage(), ie.getCause(), ExceptionUtils.getStackTrace(ie))); } } @@ -637,6 +637,16 @@ public class SearchRepository { new ImmutablePair<>( REMOVE_TAGS_CHILDREN_SCRIPT, Collections.singletonMap("fqn", entity.getFullyQualifiedName()))); + case Entity.DASHBOARD -> { + String scriptTxt = + String.format( + "if (ctx._source.dashboards.size() == 1) { ctx._source.put('deleted', '%s') }", + true); + searchClient.softDeleteOrRestoreChildren( + indexMapping.getChildAliases(clusterAlias), + scriptTxt, + List.of(new ImmutablePair<>("dashboards.id", docId))); + } case Entity.TEST_SUITE -> { TestSuite testSuite = (TestSuite) entity; if (Boolean.TRUE.equals(testSuite.getExecutable())) { @@ -687,6 +697,16 @@ public class SearchRepository { indexMapping.getChildAliases(clusterAlias), scriptTxt, List.of(new ImmutablePair<>("service.id", docId))); + case Entity.DASHBOARD -> { + scriptTxt = + String.format( + "if (ctx._source.dashboards.size() == 1) { ctx._source.put('deleted', '%s') }", + delete); + searchClient.softDeleteOrRestoreChildren( + indexMapping.getChildAliases(clusterAlias), + scriptTxt, + List.of(new ImmutablePair<>("dashboards.id", docId))); + } default -> searchClient.softDeleteOrRestoreChildren( indexMapping.getChildAliases(clusterAlias), scriptTxt, diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java index 596a182efd2..ac44dfd3479 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchClient.java @@ -1178,7 +1178,6 @@ public class OpenSearchClient implements SearchClient { @SneakyThrows public void updateSearch(UpdateRequest updateRequest) { if (updateRequest != null) { - updateRequest.docAsUpsert(true); updateRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE); LOG.debug(SENDING_REQUEST_TO_ELASTIC_SEARCH, updateRequest); client.update(updateRequest, RequestOptions.DEFAULT); @@ -1568,6 +1567,7 @@ public class OpenSearchClient implements SearchClient { if (isClientAvailable) { UpdateRequest updateRequest = new UpdateRequest(indexName, docId); updateRequest.doc(doc, XContentType.JSON); + updateRequest.docAsUpsert(true); updateSearch(updateRequest); } } @@ -1577,6 +1577,7 @@ public class OpenSearchClient implements SearchClient { if (isClientAvailable) { UpdateRequest updateRequest = new UpdateRequest(indexName, docId); updateRequest.doc(doc, XContentType.JSON); + updateRequest.docAsUpsert(true); updateSearch(updateRequest); } }