summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecorator.java3
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadRunnable.java4
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/MergedConfigResource.java9
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationConfigImpl.java7
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/api/ConfigResource.java5
-rw-r--r--src/test/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecoratorTest.java6
6 files changed, 19 insertions, 15 deletions
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 9c658e0..2c049fc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecorator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecorator.java
@@ -43,10 +43,9 @@ public class AutoReloadConfigDecorator implements ReplicationConfig, LifecycleLi
public AutoReloadConfigDecorator(
@PluginName String pluginName,
WorkQueue workQueue,
- ReplicationConfigImpl replicationConfig,
AutoReloadRunnable reloadRunner,
EventBus eventBus) {
- this.currentConfig = replicationConfig;
+ this.currentConfig = reloadRunner.getCurrentReplicationConfig();
this.autoReloadExecutor = workQueue.createQueue(1, pluginName + "_auto-reload-config");
this.reloadRunner = reloadRunner;
eventBus.register(this);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadRunnable.java b/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadRunnable.java
index e9198b2..a752a35 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadRunnable.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/AutoReloadRunnable.java
@@ -61,6 +61,10 @@ public class AutoReloadRunnable implements Runnable {
reload();
}
+ public ReplicationConfig getCurrentReplicationConfig() {
+ return loadedConfig;
+ }
+
synchronized void reload() {
String pendingConfigVersion = loadedConfig.getVersion();
try {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/MergedConfigResource.java b/src/main/java/com/googlesource/gerrit/plugins/replication/MergedConfigResource.java
index 5e8100b..43d90a5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/MergedConfigResource.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/MergedConfigResource.java
@@ -15,6 +15,7 @@
package com.googlesource.gerrit.plugins.replication;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Suppliers;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.UsedAt;
@@ -25,6 +26,7 @@ import com.google.inject.Provider;
import com.google.inject.util.Providers;
import com.googlesource.gerrit.plugins.replication.api.ConfigResource;
import com.googlesource.gerrit.plugins.replication.api.ReplicationConfigOverrides;
+import java.util.function.Supplier;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Config;
@@ -33,13 +35,16 @@ public class MergedConfigResource {
@UsedAt(Project.PLUGIN_PULL_REPLICATION)
public static MergedConfigResource withBaseOnly(ConfigResource base) {
MergedConfigResource mergedConfigResource = new MergedConfigResource();
- mergedConfigResource.base = Providers.of(base);
+ mergedConfigResource.baseConfigProvider = Providers.of(base);
return mergedConfigResource;
}
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
- @Inject private Provider<ConfigResource> base;
+ @Inject private Provider<ConfigResource> baseConfigProvider;
+
+ private final Supplier<ConfigResource> base =
+ Suppliers.memoize(() -> this.baseConfigProvider.get());
@Inject(optional = true)
@Nullable
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationConfigImpl.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationConfigImpl.java
index 854ca6a..1223db0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationConfigImpl.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationConfigImpl.java
@@ -30,21 +30,22 @@ public class ReplicationConfigImpl implements ReplicationConfig {
private static final int DEFAULT_SSH_CONNECTION_TIMEOUT_MS = 2 * 60 * 1000; // 2 minutes
private final SitePaths site;
+ private final MergedConfigResource configResource;
private boolean replicateAllOnPluginStart;
private boolean defaultForceUpdate;
private int maxRefsToLog;
private final int maxRefsToShow;
private int sshCommandTimeout;
private int sshConnectionTimeout;
- private final MergedConfigResource configResource;
private final Path pluginDataDir;
+ private final Config config;
@Inject
public ReplicationConfigImpl(
MergedConfigResource configResource, SitePaths site, @PluginData Path pluginDataDir) {
this.site = site;
+ config = configResource.getConfig();
this.configResource = configResource;
- Config config = configResource.getConfig();
this.replicateAllOnPluginStart = config.getBoolean("gerrit", "replicateOnStartup", false);
this.defaultForceUpdate = config.getBoolean("gerrit", "defaultForceUpdate", false);
this.maxRefsToLog = config.getInt("gerrit", "maxRefsToLog", 0);
@@ -120,7 +121,7 @@ public class ReplicationConfigImpl implements ReplicationConfig {
@Override
public Config getConfig() {
- return configResource.getConfig();
+ return config;
}
@Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/api/ConfigResource.java b/src/main/java/com/googlesource/gerrit/plugins/replication/api/ConfigResource.java
index 8babd01..43733bc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/api/ConfigResource.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/api/ConfigResource.java
@@ -37,10 +37,9 @@ public interface ConfigResource {
Config getConfig();
/**
- * Current logical version string of the current configuration loaded in memory, depending on the
- * actual implementation of the configuration on the persistent storage.
+ * Current logical version string of the current configuration on the persistent storage.
*
- * @return current logical version number.
+ * @return latest logical version number on the persistent storage
*/
String getVersion();
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecoratorTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecoratorTest.java
index 6facf25..021707a 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecoratorTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/AutoReloadConfigDecoratorTest.java
@@ -264,10 +264,6 @@ public class AutoReloadConfigDecoratorTest extends AbstractConfigTest {
eventBus,
Providers.of(replicationQueueMock));
return new AutoReloadConfigDecorator(
- "replication",
- workQueueMock,
- newReplicationFileBasedConfig(),
- autoReloadRunnable,
- eventBus);
+ "replication", workQueueMock, autoReloadRunnable, eventBus);
}
}