Issue 2750: "reindex" should check schema version before attempting to run
Status:  New
Owner: ----
Project Member Reported by dougk....@gmail.com, Jun 30, 2014
Affected Version: master

What steps will reproduce the problem?
1. Have an old Gerrit install, build a new version of Gerrit
2. Run "gerrit reindex"
3. Watch as it fails everywhere because the schema has changed

What is the expected output? What do you see instead?
Reindex should quickly abort because the schema is not updated, but instead it attempts to run and fails.

Nov 11, 2014
Project Member #1 bassem.rabil
We experience reindex failure with Gerrit 2.10 rc0 with the following stack trace. I am not sure if this was the same error described in this issue, however I tried passing schema version and still the same error.

$ java -jar gerrit.war reindex -d <Path to Review Site>
[DATE-STAMP] INFO  com.google.gerrit.server.cache.h2.H2CacheFactory : Enabling disk cache <Path to review_site>/cache
Exception in thread "main" com.google.inject.CreationException: Unable to create injector, see the following errors:

1) Error injecting constructor, java.lang.NullPointerException
  at com.google.gerrit.server.config.GitUploadPackGroupsProvider.<init>(GitUploadPackGroupsProvider.java:32)
  while locating com.google.gerrit.server.config.GitUploadPackGroupsProvider
  at com.google.gerrit.server.project.AccessControlModule.configure(AccessControlModule.java:32) (via modules: com.google.gerrit.pgm.Reindex$1 -> com.google.gerrit.server.project.AccessControlModule)
  while locating java.util.Set<com.google.gerrit.reviewdb.client.AccountGroup$UUID> annotated with interface com.google.gerrit.server.config.GitUploadPackGroups

1 error
	at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:448)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
	at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:225)
	at com.google.gerrit.pgm.Reindex.createSysInjector(Reindex.java:245)
	at com.google.gerrit.pgm.Reindex.run(Reindex.java:150)
	at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
	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:606)
	at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:166)
	at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:93)
	at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:50)
	at Main.main(Main.java:25)
Caused by: java.lang.NullPointerException
	at com.google.gerrit.server.account.GroupControl.isVisible(GroupControl.java:134)
	at com.google.gerrit.server.account.InternalGroupBackend$2.apply(InternalGroupBackend.java:82)
	at com.google.gerrit.server.account.InternalGroupBackend$2.apply(InternalGroupBackend.java:78)
	at com.google.common.collect.Iterators$7.computeNext(Iterators.java:647)
	at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
	at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
	at com.google.common.collect.TransformedIterator.hasNext(TransformedIterator.java:43)
	at com.google.common.collect.Iterators.addAll(Iterators.java:356)
	at com.google.common.collect.Lists.newArrayList(Lists.java:147)
	at com.google.common.collect.Lists.newArrayList(Lists.java:129)
	at com.google.gerrit.server.account.InternalGroupBackend.suggest(InternalGroupBackend.java:86)
	at com.google.gerrit.server.account.UniversalGroupBackend.suggest(UniversalGroupBackend.java:88)
	at com.google.gerrit.server.account.GroupBackends.findBestSuggestion(GroupBackends.java:64)
	at com.google.gerrit.server.account.GroupBackends.findBestSuggestion(GroupBackends.java:49)
	at com.google.gerrit.server.config.GroupSetProvider.<init>(GroupSetProvider.java:52)
	at com.google.gerrit.server.config.GitUploadPackGroupsProvider.<init>(GitUploadPackGroupsProvider.java:32)
	at com.google.gerrit.server.config.GitUploadPackGroupsProvider$$FastClassByGuice$$ce246933.newInstance(<generated>)
	at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
	at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:108)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:88)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:269)
	at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1066)
	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:41)
	at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
	at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1059)
	at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)


	... 13 more
Nov 11, 2014
Project Member #2 dougk....@gmail.com
Hi Bassem,

If this is the same issue, the problem I had was that reindex would fail, then after running the gerrit init to update the schema, reindex succeeded.  Does this make sense?
Nov 20, 2014
Project Member #3 huga...@gmail.com
Doug is right, this is not the same problem, I am working on a fix for Bassem's issue
Nov 20, 2014
Project Member #4 huga...@gmail.com
create another issue for Bassem's issue: https://code.google.com/p/gerrit/issues/detail?id=3025