summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationLogFile.java34
1 files changed, 25 insertions, 9 deletions
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 aeb0519..1079981 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationLogFile.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationLogFile.java
@@ -15,6 +15,7 @@
package com.googlesource.gerrit.plugins.replication;
import com.google.gerrit.extensions.events.LifecycleListener;
+import com.google.gerrit.extensions.systemstatus.ServerInformation;
import com.google.gerrit.server.util.SystemLog;
import com.google.inject.Inject;
@@ -25,25 +26,40 @@ import org.apache.log4j.PatternLayout;
public class ReplicationLogFile implements LifecycleListener {
private final SystemLog systemLog;
+ private final ServerInformation serverInfo;
+ private static boolean started;
@Inject
- public ReplicationLogFile(final SystemLog systemLog) {
+ public ReplicationLogFile(final SystemLog systemLog,
+ ServerInformation serverInfo) {
this.systemLog = systemLog;
+ this.serverInfo = serverInfo;
}
@Override
public void start() {
- Logger replicationLogger =
- LogManager.getLogger(ReplicationQueue.REPLICATION_LOG_NAME);
- replicationLogger.removeAllAppenders();
- replicationLogger.addAppender(systemLog.createAsyncAppender(
- replicationLogger.getName(), new PatternLayout("[%d] [%X{"
- + PushOne.ID_MDC_KEY + "}] %m%n")));
- replicationLogger.setAdditivity(false);
+ if (!started) {
+ Logger replicationLogger =
+ LogManager.getLogger(ReplicationQueue.REPLICATION_LOG_NAME);
+ replicationLogger.removeAllAppenders();
+ replicationLogger.addAppender(systemLog.createAsyncAppender(
+ replicationLogger.getName(), new PatternLayout("[%d] [%X{"
+ + PushOne.ID_MDC_KEY + "}] %m%n")));
+ replicationLogger.setAdditivity(false);
+ started = true;
+ }
}
@Override
public void stop() {
- LogManager.getLogger(ReplicationQueue.repLog.getName()).removeAllAppenders();
+ // stop is called when plugin is unloaded or when the server shutdown.
+ // Only clean up when the server is shutting down to prevent issue when a
+ // plugin is reloaded. The issue is that gerrit load the new plugin and then
+ // unload the old one so because loggers are static, the unload of the old
+ // plugin would remove the appenders just created by the new plugin.
+ if (serverInfo.getState() == ServerInformation.State.SHUTDOWN) {
+ LogManager.getLogger(ReplicationQueue.repLog.getName())
+ .removeAllAppenders();
+ }
}
}