diff options
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.java | 26 |
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(); |