Merge "Use inject replications state logger"
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecorator.java b/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecorator.java
index 6b1687c..2c946a5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecorator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecorator.java
@@ -44,12 +44,14 @@
private final GitRepositoryManager gitRepositoryManager;
private final GroupBackend groupBackend;
private final WorkQueue workQueue;
+ private final ReplicationStateListener stateLog;
@Inject
public AutoReloadConfigDecorator(Injector injector, SitePaths site,
RemoteSiteUser.Factory ruf, PluginUser pu,
GitRepositoryManager grm, GroupBackend gb,
- WorkQueue workQueue) throws ConfigInvalidException,
+ WorkQueue workQueue,
+ ReplicationStateListener stateLog) throws ConfigInvalidException,
IOException {
this.injector = injector;
this.site = site;
@@ -60,6 +62,7 @@
this.currentConfig = loadConfig();
this.currentConfigTs = getLastModified(currentConfig);
this.workQueue = workQueue;
+ this.stateLog = stateLog;
}
private static long getLastModified(ReplicationFileBasedConfig cfg) {
@@ -70,7 +73,7 @@
throws ConfigInvalidException, IOException {
return new ReplicationFileBasedConfig(injector, site,
remoteSiteUserFactory, pluginUser, gitRepositoryManager,
- groupBackend);
+ groupBackend, stateLog);
}
private synchronized boolean isAutoReload() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java b/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java
index a175285..4a760c0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java
@@ -65,8 +65,7 @@
class Destination {
private static final Logger repLog = ReplicationQueue.repLog;
- private static final ReplicationStateLogger stateLog =
- new ReplicationStateLogger(repLog);
+ private final ReplicationStateListener stateLog;
private final int poolThreads;
private final String poolName;
@@ -100,9 +99,12 @@
final RemoteSiteUser.Factory replicationUserFactory,
final PluginUser pluginUser,
final GitRepositoryManager gitRepositoryManager,
- final GroupBackend groupBackend) {
+ final GroupBackend groupBackend,
+ final ReplicationStateListener stateLog) {
remote = rc;
gitManager = gitRepositoryManager;
+ this.stateLog = stateLog;
+
delay = Math.max(0, getInt(rc, cfg, "replicationdelay", 15));
retryDelay = Math.max(0, getInt(rc, cfg, "replicationretry", 1));
lockErrorMaxRetries = cfg.getInt("replication", "lockErrorMaxRetries", 0);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/PushAll.java b/src/main/java/com/googlesource/gerrit/plugins/replication/PushAll.java
index c6ad873..5ff4035 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/PushAll.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/PushAll.java
@@ -25,8 +25,7 @@
import java.util.concurrent.TimeUnit;
class PushAll implements Runnable {
- private static final ReplicationStateLogger stateLog =
- new ReplicationStateLogger(ReplicationQueue.repLog);
+ private final ReplicationStateListener stateLog;
interface Factory {
PushAll create(String urlMatch,
@@ -45,12 +44,14 @@
PushAll(WorkQueue wq,
ProjectCache projectCache,
ReplicationQueue rq,
+ ReplicationStateListener stateLog,
@Assisted @Nullable String urlMatch,
@Assisted ReplicationFilter filter,
@Assisted ReplicationState state) {
this.workQueue = wq;
this.projectCache = projectCache;
this.replication = rq;
+ this.stateLog = stateLog;
this.urlMatch = urlMatch;
this.filter = filter;
this.state = state;
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 32ffcbd..4bbb191 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
@@ -80,8 +80,7 @@
* take that lock to ensure they are working with a current view of the object.
*/
class PushOne implements ProjectRunnable {
- private static final ReplicationStateListener stateLog =
- new ReplicationStateLogger(repLog);
+ private final ReplicationStateListener stateLog;
static final String ALL_REFS = "..all..";
static final String ID_MDC_KEY = "pushOneId";
@@ -124,6 +123,7 @@
final ChangeCache cc,
final ReplicationQueue rq,
final IdGenerator ig,
+ final ReplicationStateListener sl,
@Assisted final Project.NameKey d,
@Assisted final URIish u) {
gitManager = grm;
@@ -140,6 +140,7 @@
lockRetryCount = 0;
maxLockRetries = pool.getLockErrorMaxRetries();
id = ig.next();
+ stateLog = sl;
}
@Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationFileBasedConfig.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationFileBasedConfig.java
index c360f75..01ced63 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationFileBasedConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationFileBasedConfig.java
@@ -55,12 +55,14 @@
private final GitRepositoryManager gitRepositoryManager;
private final GroupBackend groupBackend;
private final FileBasedConfig config;
+ private final ReplicationStateListener stateLog;
@Inject
public ReplicationFileBasedConfig(final Injector injector, final SitePaths site,
final RemoteSiteUser.Factory ruf, final PluginUser pu,
final GitRepositoryManager grm,
- final GroupBackend gb) throws ConfigInvalidException, IOException {
+ final GroupBackend gb,
+ final ReplicationStateListener stateLog) throws ConfigInvalidException, IOException {
this.cfgPath = site.etc_dir.resolve("replication.config");
this.injector = injector;
this.replicationUserFactory = ruf;
@@ -69,6 +71,7 @@
this.groupBackend = gb;
this.config = new FileBasedConfig(cfgPath.toFile(), FS.DETECTED);
this.destinations = allDestinations();
+ this.stateLog = stateLog;
}
/*
@@ -159,7 +162,7 @@
Destination destination =
new Destination(injector, c, config, replicationUserFactory,
- pluginUser, gitRepositoryManager, groupBackend);
+ pluginUser, gitRepositoryManager, groupBackend, stateLog);
if (!destination.isSingleProjectMatch()) {
for (URIish u : c.getURIs()) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationModule.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationModule.java
index b9575b9..a426e89 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationModule.java
@@ -62,6 +62,7 @@
install(new FactoryModuleBuilder().build(RemoteSiteUser.Factory.class));
bind(ReplicationConfig.class).to(AutoReloadConfigDecorator.class);
+ bind(ReplicationStateListener.class).to(ReplicationStateLogger.class);
EventTypes.registerClass(new RefReplicatedEvent(null, null, null, SUCCEEDED));
EventTypes.registerClass(new RefReplicationDoneEvent(null, null, 0));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java
index ea5be66..581b065 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java
@@ -63,8 +63,8 @@
static final String REPLICATION_LOG_NAME = "replication_log";
static final Logger repLog = LoggerFactory.getLogger(REPLICATION_LOG_NAME);
private static final int SSH_REMOTE_TIMEOUT = 120 * 1000;
- private static final ReplicationStateListener stateLog =
- new ReplicationStateLogger(repLog);
+
+ private final ReplicationStateListener stateLog;
static String replaceName(String in, String name, boolean keyIsOptional) {
String key = "${name}";
@@ -85,12 +85,16 @@
private volatile boolean running;
@Inject
- ReplicationQueue(final WorkQueue wq, final ReplicationConfig rc,
- final SchemaFactory<ReviewDb> db, final EventDispatcher dis) {
+ ReplicationQueue(final WorkQueue wq,
+ final ReplicationConfig rc,
+ final SchemaFactory<ReviewDb> db,
+ final EventDispatcher dis,
+ final ReplicationStateListener sl) {
workQueue = wq;
database = db;
dispatcher = dis;
config = rc;
+ stateLog = sl;
}
@Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationStateLogger.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationStateLogger.java
index a1bc5a4..0a59ad3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationStateLogger.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationStateLogger.java
@@ -14,7 +14,9 @@
package com.googlesource.gerrit.plugins.replication;
-import org.slf4j.Logger;
+import static com.googlesource.gerrit.plugins.replication.ReplicationQueue.repLog;
+
+import com.google.inject.Singleton;
/**
* Wrapper around a Logger that also logs out the replication state.
@@ -24,30 +26,25 @@
* and logs additional information about the replication state to the
* stderr console.
*/
-public class ReplicationStateLogger implements ReplicationStateListener {
-
- private final Logger logger;
-
- public ReplicationStateLogger(Logger logger) {
- this.logger = logger;
- }
+@Singleton
+class ReplicationStateLogger implements ReplicationStateListener {
@Override
public void warn(String msg, ReplicationState... states) {
stateWriteErr("Warning: " + msg, states);
- logger.warn(msg);
+ repLog.warn(msg);
}
@Override
public void error(String msg, ReplicationState... states) {
stateWriteErr("Error: " + msg, states);
- logger.error(msg);
+ repLog.error(msg);
}
@Override
public void error(String msg, Throwable t, ReplicationState... states) {
stateWriteErr("Error: " + msg, states);
- logger.error(msg, t);
+ repLog.error(msg, t);
}
private void stateWriteErr(String msg, ReplicationState[] states) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/StartCommand.java b/src/main/java/com/googlesource/gerrit/plugins/replication/StartCommand.java
index 17a2df9..be5242e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/StartCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/StartCommand.java
@@ -23,8 +23,6 @@
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.Option;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
@@ -35,8 +33,9 @@
@RequiresCapability(StartReplicationCapability.START_REPLICATION)
@CommandMetaData(name = "start", description = "Start replication for specific project or all projects")
final class StartCommand extends SshCommand {
- private static final Logger log = LoggerFactory.getLogger(StartCommand.class);
- private static final ReplicationStateLogger stateLog = new ReplicationStateLogger(log);
+ @Inject
+ private ReplicationStateLogger stateLog;
+
@Option(name = "--all", usage = "push all known projects")
private boolean all;