Don't require secondary index when running daemon in slave mode

Add a dummy index implementation and install it when the daemon is
started in slave mode.

Make the reindex program exit with an error if run on a server that
is configured to run in slave mode.

Disable the query ssh command when in slave mode.

Change-Id: Ia323d7dfc3b8f333857ba310072e41943878c11b
This commit is contained in:
David Pursehouse
2014-09-04 22:23:53 +09:00
parent dcd2fd364e
commit 85f97710d3
5 changed files with 102 additions and 6 deletions

View File

@@ -27,6 +27,7 @@ import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.lifecycle.LifecycleManager;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.lucene.LuceneIndexModule;
import com.google.gerrit.pgm.util.Die;
import com.google.gerrit.pgm.util.SiteProgram;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
@@ -124,6 +125,7 @@ public class Reindex extends SiteProgram {
private boolean dryRun;
private Injector dbInjector;
private Config cfg;
private Injector sysInjector;
private ChangeIndex index;
@@ -131,6 +133,9 @@ public class Reindex extends SiteProgram {
public int run() throws Exception {
mustHaveValidSite();
dbInjector = createDbInjector(MULTI_USER);
cfg = dbInjector.getInstance(
Key.get(Config.class, GerritServerConfig.class));
checkNotSlaveMode();
limitThreads();
disableLuceneAutomaticCommit();
if (version == null) {
@@ -160,9 +165,13 @@ public class Reindex extends SiteProgram {
return result;
}
private void checkNotSlaveMode() throws Die {
if (cfg.getBoolean("container", "slave", false)) {
throw die("Cannot run reindex in slave mode");
}
}
private void limitThreads() {
Config cfg =
dbInjector.getInstance(Key.get(Config.class, GerritServerConfig.class));
boolean usePool = cfg.getBoolean("database", "connectionpool",
dbInjector.getInstance(DataSourceType.class).usePool());
int poolLimit = cfg.getInt("database", "poollimit",