in src/main/java/com/googlesource/gerrit/plugins/replication/StartCommand.java [57:99]
protected void run() throws Failure {
if (all && !projectPatterns.isEmpty()) {
throw new UnloggedFailure(1, "error: cannot combine --all and PROJECT");
}
ReplicationState state = new ReplicationState(new CommandProcessing(this));
ReplicationFilter projectFilter;
if (all) {
projectFilter = ReplicationFilter.all();
} else {
projectFilter = new ReplicationFilter(projectPatterns);
}
Future<?> future =
pushFactory.create(urlMatch, projectFilter, state, now).schedule(0, TimeUnit.SECONDS);
if (wait) {
if (future != null) {
try {
future.get();
} catch (InterruptedException e) {
stateLog.error(
"Thread was interrupted while waiting for PushAll operation to finish", e, state);
return;
} catch (ExecutionException e) {
stateLog.error("An exception was thrown in PushAll operation", e, state);
return;
}
}
if (state.hasPushTask()) {
try {
state.waitForReplication();
} catch (InterruptedException e) {
writeStdErrSync("We are interrupted while waiting replication to complete");
}
} else {
writeStdOutSync("Nothing to replicate");
}
}
}