Merge branch 'stable-2.16' into stable-3.0
* stable-2.16:
BaseInit: Don't fail if unable to upgrade schema for slave
Change-Id: Iece0143fc2caefdb18f5b6f5d16c58d0dbecbb97
diff --git a/java/com/google/gerrit/pgm/init/BaseInit.java b/java/com/google/gerrit/pgm/init/BaseInit.java
index 9c158b7..9e496db 100644
--- a/java/com/google/gerrit/pgm/init/BaseInit.java
+++ b/java/com/google/gerrit/pgm/init/BaseInit.java
@@ -22,6 +22,7 @@
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.Die;
import com.google.gerrit.common.IoUtil;
+import com.google.gerrit.exceptions.StorageException;
import com.google.gerrit.metrics.DisabledMetricMaker;
import com.google.gerrit.metrics.MetricMaker;
import com.google.gerrit.pgm.init.api.ConsoleUI;
@@ -33,6 +34,7 @@
import com.google.gerrit.pgm.init.index.elasticsearch.ElasticIndexModuleOnInit;
import com.google.gerrit.pgm.init.index.lucene.LuceneIndexModuleOnInit;
import com.google.gerrit.pgm.util.SiteProgram;
+import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.GerritServerConfigModule;
import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.config.SitePaths;
@@ -49,6 +51,7 @@
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
+import com.google.inject.Key;
import com.google.inject.Module;
import com.google.inject.TypeLiteral;
import com.google.inject.spi.Message;
@@ -65,6 +68,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Set;
+import org.eclipse.jgit.lib.Config;
/** Initialize a new Gerrit installation. */
public class BaseInit extends SiteProgram {
@@ -75,6 +79,7 @@
private final List<String> pluginsToInstall;
private Injector sysInjector;
+ private Config config;
protected BaseInit(PluginsDistribution pluginsDistribution, List<String> pluginsToInstall) {
this.standalone = true;
@@ -116,7 +121,16 @@
try {
indexManager.start();
run = createSiteRun(init);
- run.upgradeSchema();
+ try {
+ run.upgradeSchema();
+ } catch (StorageException e) {
+ if (config.getBoolean("container", "slave", false)) {
+ throw e;
+ }
+ String msg = "Couldn't upgrade schema. Expected if slave and read-only database";
+ System.err.println(msg);
+ logger.atWarning().withCause(e).log(msg);
+ }
init.initializer.postRun(sysInjector);
} finally {
@@ -404,6 +418,8 @@
}
});
Injector dbInjector = createDbInjector();
+ config = dbInjector.getInstance(Key.get(Config.class, GerritServerConfig.class));
+
switch (IndexModule.getIndexType(dbInjector)) {
case LUCENE:
modules.add(new LuceneIndexModuleOnInit());