Issue 1357: Server crashes without messaging a schema upgrade is required
Status:  New
Owner: ----
Project Member Reported by cran...@google.com, Apr 30, 2012
Affected Version:
Running test server locally at HEAD at commit:
534284d2977e35f4eb950c760a37da2a206e5f24

What steps will reproduce the problem?
1. Start server at SchemaVersion 65 (one behind)
2. See the exception stack trace below

What is the expected output? What do you see instead?
Expected an error message telling me to upgrade my SchemaVersion using init.

Please provide any additional information below.

[2012-04-30 11:51:11,762] INFO  com.google.gerrit.server.git.PushReplication : Empty /usr/local/google/users/cranger/src/osgerrit/../test_site/etc/replication.config; not replicating
[2012-04-30 11:51:13,917] ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.inject.CreationException: Guice creation errors:

1) Error injecting constructor, com.google.gwtorm.server.OrmException: prepare SQL
SELECT T.registered_on,T.full_name,T.preferred_email,T.contact_filed_on,T.maximum_page_size,T.show_site_header,T.use_flash_clipboard,T.download_url,T.download_command,T.copy_self_on_email,T.date_format,T.time_format,T.reverse_patch_set_order,T.show_username_in_review_category,T.inactive,T.account_id FROM accounts T LIMIT 1
 failure on accounts
  at com.google.gerrit.server.account.AccountManager.<init>(AccountManager.java:62)
  at com.google.gerrit.sshd.SshModule.configure(SshModule.java:79)
  while locating com.google.gerrit.server.account.AccountManager

1 error
	at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:183)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
	at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:217)
	at com.google.gerrit.pgm.Daemon.createSshInjector(Daemon.java:249)
	at com.google.gerrit.pgm.Daemon.initSshd(Daemon.java:233)
	at com.google.gerrit.pgm.Daemon.run(Daemon.java:146)
	at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:67)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:167)
	at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:91)
	at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:49)
	at Main.main(Main.java:25)
Caused by: com.google.gwtorm.server.OrmException: prepare SQL
SELECT T.registered_on,T.full_name,T.preferred_email,T.contact_filed_on,T.maximum_page_size,T.show_site_header,T.use_flash_clipboard,T.download_url,T.download_command,T.copy_self_on_email,T.date_format,T.time_format,T.reverse_patch_set_order,T.show_username_in_review_category,T.inactive,T.account_id FROM accounts T LIMIT 1
 failure on accounts
	at com.google.gwtorm.schema.sql.SqlDialect.convertError(SqlDialect.java:151)
	at com.google.gwtorm.schema.sql.DialectH2.convertError(DialectH2.java:45)
	at com.google.gwtorm.jdbc.JdbcAccess.convertError(JdbcAccess.java:448)
	at com.google.gwtorm.jdbc.JdbcAccess.prepareStatement(JdbcAccess.java:85)
	at com.google.gerrit.reviewdb.client.Account_Access_accounts_GwtOrm$$5.anyAccounts(Unknown Source)
	at com.google.gerrit.server.account.AccountManager.<init>(AccountManager.java:80)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
	at com.google.inject.internal.DefaultConstructionProxyFactory$2.newInstance(DefaultConstructionProxyFactory.java:85)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at com.google.inject.Scopes$1$1.get(Scopes.java:65)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
	at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:204)
	at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:198)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
	at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:198)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:179)
	... 14 more
Caused by: org.h2.jdbc.JdbcSQLException: Column "T.REVERSE_PATCH_SET_ORDER" not found; SQL statement:
SELECT T.registered_on,T.full_name,T.preferred_email,T.contact_filed_on,T.maximum_page_size,T.show_site_header,T.use_flash_clipboard,T.download_url,T.download_command,T.copy_self_on_email,T.date_format,T.time_format,T.reverse_patch_set_order,T.show_username_in_review_category,T.inactive,T.account_id FROM accounts T LIMIT 1 [42122-147]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
	at org.h2.message.DbException.get(DbException.java:167)
	at org.h2.message.DbException.get(DbException.java:144)
	at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:126)
	at org.h2.command.dml.Select.prepare(Select.java:773)
	at org.h2.command.Parser.prepare(Parser.java:202)
	at org.h2.command.Parser.prepareCommand(Parser.java:214)
	at org.h2.engine.Session.prepareLocal(Session.java:425)
	at org.h2.engine.Session.prepareCommand(Session.java:374)
	at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1056)
	at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:71)
	at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:233)
	at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:281)
	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:313)
	at com.google.gwtorm.jdbc.JdbcAccess.prepareStatement(JdbcAccess.java:83)
	... 33 more