diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/events/ChangeEventHandler.java b/openmetadata-service/src/main/java/org/openmetadata/service/events/ChangeEventHandler.java index 1904f6f5c8b..b1e228597c0 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/events/ChangeEventHandler.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/events/ChangeEventHandler.java @@ -174,6 +174,7 @@ public class ChangeEventHandler implements EventHandler { EntityReference entityReference = entityInterface.getEntityReference(); String entityType = entityReference.getType(); String entityFQN = entityReference.getFullyQualifiedName(); + deleteAllConversationsRelatedToEntity(entityInterface); return getChangeEvent(updateBy, ENTITY_DELETED, entityType, entityInterface) .withPreviousVersion(entityInterface.getVersion()) .withEntity(entityInterface) @@ -275,6 +276,15 @@ public class ChangeEventHandler implements EventHandler { .withMessage(message); } + private void deleteAllConversationsRelatedToEntity(EntityInterface entityInterface) { + String entityId = entityInterface.getId().toString(); + List threadIds = dao.feedDAO().findByEntityId(entityId); + for (String threadId : threadIds) { + dao.relationshipDAO().deleteAll(threadId, Entity.THREAD); + dao.feedDAO().delete(threadId); + } + } + public void close() { /* Nothing to do */ } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java index 8f0da168ea0..d7ae5d301cf 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java @@ -1095,6 +1095,9 @@ public interface CollectionDAO { @Bind("relation") int relation, @Define("condition") String condition); + @SqlQuery("select id from thread_entity where entityId = :entityId") + List findByEntityId(@Bind("entityId") String entityId); + class CountFieldMapper implements RowMapper> { @Override public List map(ResultSet rs, StatementContext ctx) throws SQLException {