Add id to PushOne and print it in the log and in show-queue command
This id allows to correlate a replication task displayed by show-queue
command and its log entries in the replication_log.
Change-Id: I0d8dfb73e74ddb622e54a7b16921784ad3bd8c96
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 8382606..b699e0d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
@@ -34,6 +34,7 @@
import com.google.gerrit.server.git.VisibleRefFilter;
import com.google.gerrit.server.project.NoSuchProjectException;
import com.google.gerrit.server.project.ProjectControl;
+import com.google.gerrit.server.util.IdGenerator;
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
@@ -60,6 +61,7 @@
import org.eclipse.jgit.transport.Transport;
import org.eclipse.jgit.transport.URIish;
import org.slf4j.Logger;
+import org.slf4j.MDC;
import java.io.IOException;
import java.util.Collection;
@@ -82,6 +84,7 @@
private static final ReplicationStateLogger stateLog =
new ReplicationStateLogger(repLog);
static final String ALL_REFS = "..all..";
+ static final String ID_MDC_KEY = "pushOneId";
interface Factory {
PushOne create(Project.NameKey d, URIish u);
@@ -109,6 +112,7 @@
LinkedListMultimap.create();
private final int maxLockRetries;
private int lockRetryCount;
+ private final int id;
@Inject
PushOne(final GitRepositoryManager grm,
@@ -120,6 +124,7 @@
final PerThreadRequestScope.Scoper ts,
final ChangeCache cc,
final ReplicationQueue rq,
+ final IdGenerator ig,
@Assisted final Project.NameKey d,
@Assisted final URIish u) {
gitManager = grm;
@@ -135,6 +140,7 @@
uri = u;
lockRetryCount = 0;
maxLockRetries = pool.getLockErrorMaxRetries();
+ id = ig.next();
}
@Override
@@ -154,10 +160,12 @@
@Override
public String toString() {
- if (retryCount == 0) {
- return "push " + uri;
+ String print = "[" + IdGenerator.format(id) + "] push " + uri;
+
+ if (retryCount > 0) {
+ print = "(retry " + retryCount + ") " + print;
}
- return "(retry " + retryCount + ") " + "push " + uri;
+ return print;
}
boolean isRetrying() {
@@ -262,6 +270,7 @@
// we start replication (instead a new instance, with the same URI, is
// created and scheduled for a future point in time.)
//
+ MDC.put(ID_MDC_KEY, IdGenerator.format(id));
if (!pool.requestRunway(this)) {
if (!canceled) {
repLog.info("Rescheduling replication to " + uri
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationLogFile.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationLogFile.java
index 5af7f21..aeb0519 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationLogFile.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationLogFile.java
@@ -37,7 +37,8 @@
LogManager.getLogger(ReplicationQueue.REPLICATION_LOG_NAME);
replicationLogger.removeAllAppenders();
replicationLogger.addAppender(systemLog.createAsyncAppender(
- replicationLogger.getName(), new PatternLayout("[%d] %m%n")));
+ replicationLogger.getName(), new PatternLayout("[%d] [%X{"
+ + PushOne.ID_MDC_KEY + "}] %m%n")));
replicationLogger.setAdditivity(false);
}