From 001ec69b0927ba14bcda5084d256c9dbbaec1176 Mon Sep 17 00:00:00 2001 From: Vivek Ratnavel Subramanian Date: Sun, 20 Mar 2022 01:37:15 -0700 Subject: [PATCH] Fix #3402: Inconsistency in activity feed for services activities (#3535) --- .../java/org/openmetadata/catalog/Entity.java | 14 ++++++++++++- .../jdbi3/DatabaseServiceRepository.java | 21 +++++++++++++++++++ .../services/DatabaseServiceResourceTest.java | 9 +++++++- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/Entity.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/Entity.java index ba3ef963f37..d369f689df5 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/Entity.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/Entity.java @@ -107,7 +107,19 @@ public final class Entity { // // List of entities whose changes should not be published to the Activity Feed // - public static final List ACTIVITY_FEED_EXCLUDED_ENTITIES = List.of(USER, TEAM, ROLE, POLICY, BOTS); + public static final List ACTIVITY_FEED_EXCLUDED_ENTITIES = + List.of( + USER, + TEAM, + ROLE, + POLICY, + BOTS, + AIRFLOW_PIPELINE, + DATABASE_SERVICE, + PIPELINE_SERVICE, + DASHBOARD_SERVICE, + STORAGE_SERVICE, + MESSAGING_SERVICE); private Entity() {} diff --git a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepository.java b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepository.java index 3f030611834..24144085927 100644 --- a/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepository.java +++ b/catalog-rest-service/src/main/java/org/openmetadata/catalog/jdbi3/DatabaseServiceRepository.java @@ -18,11 +18,13 @@ import static org.openmetadata.catalog.fernet.Fernet.decryptIfTokenized; import static org.openmetadata.catalog.fernet.Fernet.isTokenized; import static org.openmetadata.catalog.util.EntityUtil.toBoolean; +import com.fasterxml.jackson.core.JsonProcessingException; import java.io.IOException; import java.net.URI; import java.text.ParseException; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.UUID; import org.openmetadata.catalog.Entity; import org.openmetadata.catalog.entity.services.DatabaseService; @@ -275,5 +277,24 @@ public class DatabaseServiceRepository extends EntityRepository public DatabaseServiceUpdater(DatabaseService original, DatabaseService updated, Operation operation) { super(original, updated, operation); } + + @Override + public void entitySpecificUpdate() throws IOException { + updateDatabaseConnectionConfig(); + } + + private void updateDatabaseConnectionConfig() throws JsonProcessingException { + DatabaseConnection origConn = original.getEntity().getDatabaseConnection(); + DatabaseConnection updatedConn = updated.getEntity().getDatabaseConnection(); + if (origConn != null + && updatedConn != null + && Objects.equals( + Fernet.decryptIfTokenized(origConn.getPassword()), + Fernet.decryptIfTokenized(updatedConn.getPassword()))) { + // Password in clear didn't change. The tokenized changed because it's time-dependent. + updatedConn.setPassword(origConn.getPassword()); + } + recordChange("databaseConnection", origConn, updatedConn, true); + } } } diff --git a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/services/DatabaseServiceResourceTest.java b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/services/DatabaseServiceResourceTest.java index db51f8cef48..b29ab77ce80 100644 --- a/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/services/DatabaseServiceResourceTest.java +++ b/catalog-rest-service/src/test/java/org/openmetadata/catalog/resources/services/DatabaseServiceResourceTest.java @@ -120,11 +120,14 @@ public class DatabaseServiceResourceTest extends EntityResourceTest