Use proper HEAD ref value when creating project
Wrong name of HEAD reference was used when repository was created after
RepositoryNotFoundException. This results in HEAD pointing to HEAD.
Change-Id: I647618fc6d35a5e2ff6bcfeda5084584e591ddda
Signed-off-by: Dariusz Luksza <dariusz@luksza.org>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java b/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
index 8521910..28b5e6b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
@@ -21,7 +21,9 @@
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Sets;
+import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
+import com.google.gerrit.extensions.events.NewProjectCreatedListener;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.metrics.Timer1;
import com.google.gerrit.reviewdb.client.Project;
@@ -399,6 +401,24 @@
try {
Ref head = git.exactRef(Constants.HEAD);
if (replicationQueue.createProject(projectName, head != null ? head.getName() : null)) {
+ NewProjectCreatedListener.Event event =
+ new NewProjectCreatedListener.Event() {
+ @Override
+ public String getProjectName() {
+ return projectName.get();
+ }
+
+ @Override
+ public String getHeadName() {
+ return head != null ? head.getTarget().getName() : null;
+ }
+
+ @Override
+ public NotifyHandling getNotify() {
+ return NotifyHandling.NONE;
+ }
+ };
+ replicationQueue.onNewProjectCreated(event);
repLog.warn("Missing repository created; retry replication to " + uri);
pool.reschedule(this, Destination.RetryReason.REPOSITORY_MISSING);
} else {