Implement automatic schema upgrading

SchemaVersion subclasses form a DAG, managed by Guice, chaining the
current schema version to its immediate predecessor.  When a version
is selected, we try to upgrade to it by first asking is predecessor
to validate (and upgrade).

Drops of schema elements are not performed automatically, but instead
are printed to the console so the administrator can verify the drops
aren't their own private schema elements, and execute the commands
they know won't damage their own private data.

Change-Id: I2a53749ca23432da2a9b1866203aafb151b48aab
Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce
2009-12-23 10:43:01 -08:00
parent 23e0987350
commit 5a15b6d46f
19 changed files with 486 additions and 69 deletions

View File

@@ -21,13 +21,13 @@ import com.google.gerrit.lifecycle.LifecycleManager;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.server.config.AuthConfigModule;
import com.google.gerrit.server.config.CanonicalWebUrlModule;
import com.google.gerrit.server.config.DatabaseModule;
import com.google.gerrit.server.config.GerritGlobalModule;
import com.google.gerrit.server.config.GerritServerConfigModule;
import com.google.gerrit.server.config.MasterNodeStartup;
import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.config.SitePathFromSystemConfigProvider;
import com.google.gerrit.server.schema.DataSourceProvider;
import com.google.gerrit.server.schema.DatabaseModule;
import com.google.gerrit.sshd.SshModule;
import com.google.gerrit.sshd.commands.MasterCommandModule;
import com.google.inject.AbstractModule;