Index change only for meta ref propagation When a change gets replicated from one master to another only meta ref needs to be automatically reindexed on the destination instance. Bug: Issue 11616 Change-Id: I4023ae8ae06dc6a394f613068a6a744a2685d340
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/event/FetchRefReplicatedEventHandler.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/event/FetchRefReplicatedEventHandler.java index fc96394..3f49bdd 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/event/FetchRefReplicatedEventHandler.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/event/FetchRefReplicatedEventHandler.java
@@ -17,6 +17,7 @@ import com.google.common.flogger.FluentLogger; import com.google.gerrit.entities.Change; import com.google.gerrit.entities.Project; +import com.google.gerrit.entities.RefNames; import com.google.gerrit.server.events.Event; import com.google.gerrit.server.events.EventListener; import com.google.gerrit.server.index.change.ChangeIndexer; @@ -37,11 +38,14 @@ public void onEvent(Event event) { if (event instanceof FetchRefReplicatedEvent) { FetchRefReplicatedEvent fetchRefReplicatedEvent = (FetchRefReplicatedEvent) event; + if (!RefNames.isNoteDbMetaRef(fetchRefReplicatedEvent.getRefName())) { + return; + } + Project.NameKey projectNameKey = fetchRefReplicatedEvent.getProjectNameKey(); logger.atFine().log( "Indexing ref '%s' for project %s", fetchRefReplicatedEvent.getRefName(), projectNameKey.get()); - Change.Id changeId = Change.Id.fromRef(fetchRefReplicatedEvent.getRefName()); if (changeId != null && fetchRefReplicatedEvent
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/event/FetchRefReplicatedEventHandlerTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/event/FetchRefReplicatedEventHandlerTest.java index 1d87195..6f75135 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/event/FetchRefReplicatedEventHandlerTest.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/event/FetchRefReplicatedEventHandlerTest.java
@@ -56,6 +56,21 @@ } @Test + public void onEventShouldIndexOnlyMetaRef() { + Project.NameKey projectNameKey = Project.nameKey("testProject"); + String ref = "refs/changes/41/41/1"; + Change.Id changeId = Change.Id.fromRef(ref); + fetchRefReplicatedEventHandler.onEvent( + new FetchRefReplicatedEvent( + projectNameKey.get(), + ref, + "aSourceNode", + ReplicationState.RefFetchResult.SUCCEEDED, + RefUpdate.Result.FAST_FORWARD)); + verify(changeIndexerMock, never()).index(eq(projectNameKey), eq(changeId)); + } + + @Test public void onEventShouldNotIndexMissingChange() { fetchRefReplicatedEventHandler.onEvent( new FetchRefReplicatedEvent(