Yesterday I upgraded our Gerrit instance from 2.10 to 2.12.1, and today we are getting a significant number of failures when people push to Gerrit. The key parts of the stack track (from the Gerrit server
[2016-03-08 13:54:10,034] [SSH git-receive-pack '/gda/gda-core.git' (xxxx.xxxx)] ERROR com.google.gerrit.sshd.BaseCommand : Internal server error (user xxxx.xxxx account 1000023) during git-receive-pack '/gda/gda-core.git'
com.google.gerrit.sshd.BaseCommand$Failure: fatal: Unpack error, check server log
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:176)
Caused by: java.io.IOException: Unpack error on project "gda/gda-core":
AdvertiseRefsHook: org.eclipse.jgit.transport.AdvertiseRefsHookChain@404d370eclass org.eclipse.jgit.transport.AdvertiseRefsHookChain
Caused by: org.eclipse.jgit.errors.UnpackException: Exception while parsing pack stream
Caused by: org.eclipse.jgit.errors.MissingObjectException: Missing tree 0a6d97add35f8cfe79e5c9fc645caa97082234ae
Other occurrences have org.eclipse.jgit.errors.MissingObjectException: Missing blob (rather than Missing tree) but are otherwise the same.
A web search shows various mentions of this, but the underlying cause is not clear. Some people suggest that it occurs after a "gerrit gc" is run on the repo. This does not apply in our case: prior to the upgrade, and while Gerrit was stopped, we ran a "git gc" from the command line in our repositories. The first occurrence of the problem was after than. The overnight, Gerrit scheduled its own gc, but the problem still occurs.
I have seen a suggestion that setting receive.checkReferencedObjectsAreReachable=false will avoid the error, but I have not yet tried that.
Does anyone have any suggestions about how to proceed? We don't really want to roll back to 2.10 (indeed, I'm not even sure if that is possible).
Thanks