diff options
Diffstat (limited to 'src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java')
-rw-r--r-- | src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java | 20 |
1 files changed, 12 insertions, 8 deletions
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 6c5376d..31f8c57 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java @@ -28,6 +28,7 @@ import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.git.WorkQueue; import com.google.gwtorm.server.SchemaFactory; import com.google.inject.Inject; +import com.google.inject.Provider; import com.googlesource.gerrit.plugins.replication.PushResultProcessing.GitUpdateProcessing; import com.googlesource.gerrit.plugins.replication.ReplicationConfig.FilterType; @@ -55,7 +56,7 @@ import java.util.List; import java.util.Set; /** Manages automatic replication to remote repositories. */ -class ReplicationQueue implements +public class ReplicationQueue implements LifecycleListener, GitReferenceUpdatedListener, NewProjectCreatedListener, @@ -83,6 +84,7 @@ class ReplicationQueue implements private final SchemaFactory<ReviewDb> database; private final DynamicItem<EventDispatcher> dispatcher; private final ReplicationConfig config; + private final Provider<SshSessionFactory> sshSessionFactoryProvider; private volatile boolean running; @Inject @@ -90,12 +92,14 @@ class ReplicationQueue implements ReplicationConfig rc, SchemaFactory<ReviewDb> db, DynamicItem<EventDispatcher> dis, - ReplicationStateListener sl) { + ReplicationStateListener sl, + Provider<SshSessionFactory> sshSessionFactoryProvider) { workQueue = wq; database = db; dispatcher = dis; config = rc; stateLog = sl; + this.sshSessionFactoryProvider = sshSessionFactoryProvider; } @Override @@ -276,7 +280,7 @@ class ReplicationQueue implements } } - private static void createRemoteSsh(URIish uri, String head) { + private void createRemoteSsh(URIish uri, String head) { String quotedPath = QuotedString.BOURNE.quote(uri.getPath()); String cmd = "mkdir -p " + quotedPath + " && cd " + quotedPath @@ -339,7 +343,7 @@ class ReplicationQueue implements } } - private static void deleteRemoteSsh(URIish uri) { + private void deleteRemoteSsh(URIish uri) { String quotedPath = QuotedString.BOURNE.quote(uri.getPath()); String cmd = "rm -rf " + quotedPath; OutputStream errStream = newErrorBufferStream(); @@ -368,7 +372,7 @@ class ReplicationQueue implements } } - private static void updateHeadRemoteSsh(URIish uri, String newHead) { + private void updateHeadRemoteSsh(URIish uri, String newHead) { String quotedPath = QuotedString.BOURNE.quote(uri.getPath()); String cmd = "cd " + quotedPath + " && git symbolic-ref HEAD " + QuotedString.BOURNE.quote(newHead); @@ -398,7 +402,7 @@ class ReplicationQueue implements } } - private static void executeRemoteSsh(URIish uri, String cmd, + private void executeRemoteSsh(URIish uri, String cmd, OutputStream errStream) throws IOException { RemoteSession ssh = connect(uri); Process proc = ssh.exec(cmd, 0); @@ -419,8 +423,8 @@ class ReplicationQueue implements ssh.disconnect(); } - private static RemoteSession connect(URIish uri) throws TransportException { - return SshSessionFactory.getInstance().getSession(uri, null, FS.DETECTED, + private RemoteSession connect(URIish uri) throws TransportException { + return sshSessionFactoryProvider.get().getSession(uri, null, FS.DETECTED, SSH_REMOTE_TIMEOUT); } |