From 7e66756821cdac5cc5fd6d220c4d330644a67370 Mon Sep 17 00:00:00 2001 From: Mohit Yadav <105265192+mohityadav766@users.noreply.github.com> Date: Mon, 4 Mar 2024 22:48:24 +0530 Subject: [PATCH] [Perf Fix] Use Where clause on change event listing (#15430) * - Use Where clause on change event listing * - Poll in a minute * - Fix Entity Url - Ignore Query Entity for Change Event Update --- .../service/apps/bundles/changeEvent/EventAlertProducer.java | 3 --- .../org/openmetadata/service/events/ChangeEventHandler.java | 3 +++ .../service/events/scheduled/EventSubscriptionScheduler.java | 2 +- .../service/formatter/decorators/MessageDecorator.java | 4 ++++ .../java/org/openmetadata/service/jdbi3/CollectionDAO.java | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) delete mode 100644 openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/changeEvent/EventAlertProducer.java diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/changeEvent/EventAlertProducer.java b/openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/changeEvent/EventAlertProducer.java deleted file mode 100644 index 87447306421..00000000000 --- a/openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/changeEvent/EventAlertProducer.java +++ /dev/null @@ -1,3 +0,0 @@ -package org.openmetadata.service.apps.bundles.changeEvent; - -public class EventAlertProducer {} 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 fd9fcb299b5..62cad4ea51d 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 @@ -63,6 +63,9 @@ public class ChangeEventHandler implements EventHandler { getChangeEventFromResponseContext(responseContext, loggedInUserName, method); if (optionalChangeEvent.isPresent()) { ChangeEvent changeEvent = optionalChangeEvent.get(); + if (changeEvent.getEntityType().equals(Entity.QUERY)) { + return null; + } // Always set the Change Event Username as context Principal, the one creating the CE changeEvent.setUserName(loggedInUserName); LOG.info( diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/events/scheduled/EventSubscriptionScheduler.java b/openmetadata-service/src/main/java/org/openmetadata/service/events/scheduled/EventSubscriptionScheduler.java index d3ccf1d9b24..30491c76fab 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/events/scheduled/EventSubscriptionScheduler.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/events/scheduled/EventSubscriptionScheduler.java @@ -132,7 +132,7 @@ public class EventSubscriptionScheduler { private Trigger trigger(EventSubscription eventSubscription) { return TriggerBuilder.newTrigger() .withIdentity(eventSubscription.getId().toString(), ALERT_TRIGGER_GROUP) - .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(3)) + .withSchedule(SimpleScheduleBuilder.repeatMinutelyForever(1)) .startNow() .build(); } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/formatter/decorators/MessageDecorator.java b/openmetadata-service/src/main/java/org/openmetadata/service/formatter/decorators/MessageDecorator.java index ad1c6d88473..cb0c112f1c5 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/formatter/decorators/MessageDecorator.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/formatter/decorators/MessageDecorator.java @@ -319,6 +319,10 @@ public interface MessageDecorator { } message.setHeader(headerMessage); message.setMessages(attachmentList); + + MessageParser.EntityLink entityLink = MessageParser.EntityLink.parse(thread.getAbout()); + EntityInterface entityInterface = Entity.getEntity(entityLink, "", Include.ALL); + message.setEntityUrl(buildEntityUrl(entityLink.getEntityFQN(), entityInterface)); return message; } 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 bdd5e042120..dde01a07652 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 @@ -3222,7 +3222,8 @@ public interface CollectionDAO { List listWithoutEntityFilter( @Bind("eventType") String eventType, @Bind("timestamp") long timestamp); - @SqlQuery("SELECT json FROM change_event ORDER BY eventTime ASC LIMIT :limit OFFSET :offset") + @SqlQuery( + "SELECT json FROM change_event where offset > :offset ORDER BY eventTime ASC LIMIT :limit") List list(@Bind("limit") long limit, @Bind("offset") long offset); @SqlQuery("SELECT count(*) FROM change_event")