Merge "Expose API to update remotes' configurations"
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 008e50b..98170ae 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java
@@ -127,8 +127,8 @@
}
public static class QueueInfo {
- public final Map<URIish, PushOne> pending;
- public final Map<URIish, PushOne> inFlight;
+ public final ImmutableMap<URIish, PushOne> pending;
+ public final ImmutableMap<URIish, PushOne> inFlight;
public QueueInfo(Map<URIish, PushOne> pending, Map<URIish, PushOne> inFlight) {
this.pending = ImmutableMap.copyOf(pending);
@@ -640,7 +640,7 @@
}
// by default push all projects
- List<String> projects = config.getProjects();
+ ImmutableList<String> projects = config.getProjects();
if (projects.isEmpty()) {
return true;
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/DestinationsCollection.java b/src/main/java/com/googlesource/gerrit/plugins/replication/DestinationsCollection.java
index 08f3477..3854801 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/DestinationsCollection.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/DestinationsCollection.java
@@ -52,7 +52,7 @@
private final Destination.Factory destinationFactory;
private final Provider<ReplicationQueue> replicationQueue;
- private volatile List<Destination> destinations;
+ private volatile ImmutableList<Destination> destinations;
private boolean shuttingDown;
public static class EventQueueNotEmptyException extends Exception {
@@ -258,7 +258,7 @@
}
}
- private List<Destination> allDestinations(
+ private ImmutableList<Destination> allDestinations(
Destination.Factory destinationFactory, List<RemoteConfiguration> remoteConfigurations) {
ImmutableList.Builder<Destination> dest = ImmutableList.builder();
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 ed84087..54f4463 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/PushOne.java
@@ -355,7 +355,7 @@
}
ReplicationState[] getStatesByRef(String ref) {
- Collection<ReplicationState> states = stateMap.get(ref);
+ List<ReplicationState> states = stateMap.get(ref);
return states.toArray(new ReplicationState[states.size()]);
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/RemoteConfiguration.java b/src/main/java/com/googlesource/gerrit/plugins/replication/RemoteConfiguration.java
index 05b4066..726bcf5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/RemoteConfiguration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/RemoteConfiguration.java
@@ -14,7 +14,6 @@
package com.googlesource.gerrit.plugins.replication;
import com.google.common.collect.ImmutableList;
-import java.util.List;
import org.eclipse.jgit.transport.RemoteConfig;
/** Remote configuration for a replication endpoint */
@@ -117,7 +116,7 @@
* @return true, when configuration is for a single project, false otherwise
*/
default boolean isSingleProjectMatch() {
- List<String> projects = getProjects();
+ ImmutableList<String> projects = getProjects();
boolean ret = (projects.size() == 1);
if (ret) {
String projectMatch = projects.get(0);
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 76ee14b..4f2def8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationConfigImpl.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationConfigImpl.java
@@ -13,9 +13,13 @@
// limitations under the License.
package com.googlesource.gerrit.plugins.replication;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static java.util.concurrent.TimeUnit.SECONDS;
+
import com.google.common.base.Strings;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.annotations.PluginData;
+import com.google.gerrit.server.config.ConfigUtil;
import com.google.gerrit.server.config.SitePaths;
import com.google.inject.Inject;
import java.nio.file.Path;
@@ -30,7 +34,7 @@
private int maxRefsToLog;
private final int maxRefsToShow;
private int sshCommandTimeout;
- private int sshConnectionTimeout = DEFAULT_SSH_CONNECTION_TIMEOUT_MS;
+ private int sshConnectionTimeout;
private final MergedConfigResource configResource;
private final Path pluginDataDir;
@@ -44,6 +48,17 @@
this.defaultForceUpdate = config.getBoolean("gerrit", "defaultForceUpdate", false);
this.maxRefsToLog = config.getInt("gerrit", "maxRefsToLog", 0);
this.maxRefsToShow = config.getInt("gerrit", "maxRefsToShow", 2);
+ this.sshCommandTimeout =
+ (int) ConfigUtil.getTimeUnit(config, "gerrit", null, "sshCommandTimeout", 0, SECONDS);
+ this.sshConnectionTimeout =
+ (int)
+ ConfigUtil.getTimeUnit(
+ config,
+ "gerrit",
+ null,
+ "sshConnectionTimeout",
+ DEFAULT_SSH_CONNECTION_TIMEOUT_MS,
+ MILLISECONDS);
this.pluginDataDir = pluginDataDir;
}