Consume only relevant stream events The pull-replication plugin is uninterested in the vast majority of ProjectEvent specifications, which include numerous types such as ChangeAbandoned, CommentAdded, and FetchRefReplicatedEvent, among others. Instead, pull-replication focuses solely on events that trigger the creation, update, or removal of Git repositories. Specifically, these events are: - ProjectDeletedEvent - ProjectCreatedEvent - RefUpdatedEvent - ProjectHeadUpdatedEvent All other ProjectEvent types are unnecessary for pull-replication and can be safely ignored when consuming stream events. This change ensures that only relevant events are processed, improving efficiency and reducing noise. Change-Id: I5914f3752d44776eb6e2c25ec9b7ca60a0e6eeee
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/event/StreamEventListener.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/event/StreamEventListener.java index 4c9793c..eb2d7e0 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/event/StreamEventListener.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/event/StreamEventListener.java
@@ -212,7 +212,7 @@ } private boolean shouldReplicateProject(Event event) { - if (!(event instanceof ProjectEvent)) { + if (!isInterestingEventType(event)) { return false; } @@ -243,6 +243,13 @@ return source.wouldFetchProject(projectEvent.getProjectNameKey()); } + private static boolean isInterestingEventType(Event event) { + return event instanceof ProjectDeletedEvent + || event instanceof ProjectCreatedEvent + || event instanceof RefUpdatedEvent + || event instanceof ProjectHeadUpdatedEvent; + } + private boolean isRefDelete(RefUpdatedEvent event) { return ZERO_ID_NAME.equals(event.refUpdate.get().newRev); }