[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
This commit is contained in:
Mohit Yadav 2024-03-04 22:48:24 +05:30 committed by GitHub
parent 110e7a4f4b
commit 7e66756821
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 10 additions and 5 deletions

View File

@ -1,3 +0,0 @@
package org.openmetadata.service.apps.bundles.changeEvent;
public class EventAlertProducer {}

View File

@ -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(

View File

@ -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();
}

View File

@ -319,6 +319,10 @@ public interface MessageDecorator<T> {
}
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;
}

View File

@ -3222,7 +3222,8 @@ public interface CollectionDAO {
List<String> 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<String> list(@Bind("limit") long limit, @Bind("offset") long offset);
@SqlQuery("SELECT count(*) FROM change_event")