summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDariusz Luksza <dariusz@luksza.org>2015-03-03 09:19:46 +0100
committerDariusz Ɓuksza <dariusz.luksza@gmail.com>2015-05-15 13:29:06 +0000
commit53ee1b8ec4de5de4d710233eda2230b5380f1390 (patch)
tree1f2227352b35c3acde92082f932a3964425104c1
parent604b3396a72461c4554248999b3dadcf620e82a9 (diff)
Emit replication status events after initial full syncv2.11.2v2.11.1
When gerrit.replicateOnStartup configuration option is set to 'true', replication plugin will schedule delayed jobs to synchronize all repositories with replicas. But it will not emit any event about operation status, this can lead to a situation where there is no information about repositories not being synchronized. Imagine a situation when some inactive repositories are synchronized to dedicated replica server. Then when such replica server will go down we won't notice since all failed replication events will not be published. This patch ensures that replication status events are sent out on initial synchronization. Change-Id: I57ce984b9fde44927bb649f0672e9278065a8847 Signed-off-by: Dariusz Luksza <dariusz@luksza.org>
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/OnStartStop.java17
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/PushResultProcessing.java15
-rw-r--r--src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationState.java6
3 files changed, 15 insertions, 23 deletions
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/OnStartStop.java b/src/main/java/com/googlesource/gerrit/plugins/replication/OnStartStop.java
index 5b737f1..a5df0a7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/OnStartStop.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/OnStartStop.java
@@ -15,10 +15,15 @@
package com.googlesource.gerrit.plugins.replication;
import com.google.common.util.concurrent.Atomics;
+import com.google.gerrit.common.EventDispatcher;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.extensions.systemstatus.ServerInformation;
+import com.google.gerrit.reviewdb.server.ReviewDb;
+import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
+import com.googlesource.gerrit.plugins.replication.PushResultProcessing.GitUpdateProcessing;
+
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
@@ -29,17 +34,23 @@ class OnStartStop implements LifecycleListener {
private final PushAll.Factory pushAll;
private final ReplicationQueue queue;
private final ReplicationConfig config;
+ private final SchemaFactory<ReviewDb> database;
+ private final EventDispatcher eventDispatcher;
@Inject
OnStartStop(
ServerInformation srvInfo,
PushAll.Factory pushAll,
ReplicationQueue queue,
- ReplicationConfig config) {
+ ReplicationConfig config,
+ EventDispatcher eventDispatcher,
+ SchemaFactory<ReviewDb> database) {
this.srvInfo = srvInfo;
this.pushAll = pushAll;
this.queue = queue;
this.config = config;
+ this.eventDispatcher = eventDispatcher;
+ this.database = database;
this.pushAllFuture = Atomics.newReference();
}
@@ -49,7 +60,9 @@ class OnStartStop implements LifecycleListener {
if (srvInfo.getState() == ServerInformation.State.STARTUP
&& config.isReplicateAllOnPluginStart()) {
- ReplicationState state = new ReplicationState();
+ ReplicationState state =
+ new ReplicationState(new GitUpdateProcessing(eventDispatcher,
+ database));
pushAllFuture.set(pushAll.create(
null, ReplicationFilter.all(), state).schedule(30, TimeUnit.SECONDS));
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/PushResultProcessing.java b/src/main/java/com/googlesource/gerrit/plugins/replication/PushResultProcessing.java
index 762f069..0f8cc9e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/PushResultProcessing.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/PushResultProcessing.java
@@ -211,19 +211,4 @@ public abstract class PushResultProcessing {
return change;
}
}
-
- public static class NoopProcessing extends PushResultProcessing {
- @Override
- void onRefReplicatedToOneNode(String project, String ref, URIish uri,
- RefPushResult status) {
- }
-
- @Override
- void onRefReplicatedToAllNodes(String project, String ref, int nodesCount) {
- }
-
- @Override
- void onAllRefsReplicatedToAllNodes(int totalPushTasksCount) {
- }
- }
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationState.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationState.java
index 9632d5f..c851db6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationState.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationState.java
@@ -17,8 +17,6 @@ package com.googlesource.gerrit.plugins.replication;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
-import com.googlesource.gerrit.plugins.replication.PushResultProcessing.NoopProcessing;
-
import org.eclipse.jgit.transport.URIish;
import java.util.concurrent.CountDownLatch;
@@ -51,10 +49,6 @@ public class ReplicationState {
private int totalPushTasksCount;
private int finishedPushTasksCount;
- public ReplicationState() {
- this(new NoopProcessing());
- }
-
public ReplicationState(PushResultProcessing processing) {
pushResultProcessing = processing;
statusByProjectRef = HashBasedTable.create();