summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java26
1 files changed, 19 insertions, 7 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java
index 133b856b14..2e12f5c62a 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaVersionCheck.java
@@ -18,6 +18,7 @@ import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.client.CurrentSchemaVersion;
import com.google.gerrit.reviewdb.server.ReviewDb;
+import com.google.gerrit.server.config.SitePaths;
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
@@ -37,14 +38,17 @@ public class SchemaVersionCheck implements LifecycleListener {
}
private final SchemaFactory<ReviewDb> schema;
+ private final SitePaths site;
@Current
private final Provider<SchemaVersion> version;
@Inject
public SchemaVersionCheck(SchemaFactory<ReviewDb> schemaFactory,
+ final SitePaths site,
@Current Provider<SchemaVersion> version) {
this.schema = schemaFactory;
+ this.site = site;
this.version = version;
}
@@ -52,17 +56,25 @@ public class SchemaVersionCheck implements LifecycleListener {
try {
final ReviewDb db = schema.open();
try {
- final CurrentSchemaVersion sVer = getSchemaVersion(db);
- final int eVer = version.get().getVersionNbr();
+ final CurrentSchemaVersion currentVer = getSchemaVersion(db);
+ final int expectedVer = version.get().getVersionNbr();
- if (sVer == null) {
+ if (currentVer == null) {
throw new ProvisionException("Schema not yet initialized."
- + " Run init to initialize the schema.");
+ + " Run init to initialize the schema:\n"
+ + "$ java -jar gerrit.war init -d "
+ + site.site_path.getAbsolutePath());
}
- if (sVer.versionNbr != eVer) {
+ if (currentVer.versionNbr < expectedVer) {
throw new ProvisionException("Unsupported schema version "
- + sVer.versionNbr + "; expected schema version " + eVer
- + ". Run init to upgrade.");
+ + currentVer.versionNbr + "; expected schema version " + expectedVer
+ + ". Run init to upgrade:\n"
+ + "$ java -jar " + site.gerrit_war.getAbsolutePath() + " init -d "
+ + site.site_path.getAbsolutePath());
+ } else if (currentVer.versionNbr > expectedVer) {
+ throw new ProvisionException("Unsupported schema version "
+ + currentVer.versionNbr + "; expected schema version " + expectedVer
+ + ". Downgrade is not supported.");
}
} finally {
db.close();