Affected Version: 2.7 (jgit updated to 3.5.3)
i'm trying to make a gerrit setup where some repos are (restricted)
supersets of other repos (i gave up on restricted branches due to Issue 1582 , which wasn't fixed properly, and a fix doesn't seem likely due to the inherent performance problems). to avoid duplicating all the shared data, i tried to use alternates. both cgit and jgit (3.5.3) are able to browse these repos. however, gerrit doesn't like them:
pull:
org.eclipse.jgit.errors.PackProtocolException: want 5f0e1d9ff657b455b991c6ac39e78cbb7d424a8b not valid
at org.eclipse.jgit.transport.UploadPack.parseWants(UploadPack.java:1068)
at org.eclipse.jgit.transport.UploadPack.processHaveLines(UploadPack.java:941)
at org.eclipse.jgit.transport.UploadPack.negotiate(UploadPack.java:906)
at org.eclipse.jgit.transport.UploadPack.service(UploadPack.java:689)
at org.eclipse.jgit.transport.UploadPack.upload(UploadPack.java:628)
at com.google.gerrit.sshd.commands.Upload.runImpl(Upload.java:57)
at com.google.gerrit.sshd.AbstractGitCommand.service(AbstractGitCommand.java:101)
at com.google.gerrit.sshd.AbstractGitCommand.access$000(AbstractGitCommand.java:32)
at com.google.gerrit.sshd.AbstractGitCommand$1.run(AbstractGitCommand.java:70)
at com.google.gerrit.sshd.BaseCommand$TaskThunk.run(BaseCommand.java:429)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:353)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.jgit.errors.MissingObjectException: Missing unknown 5f0e1d9ff657b455b991c6ac39e78cbb7d424a8b
at org.eclipse.jgit.internal.storage.file.WindowCursor.open(WindowCursor.java:148)
at org.eclipse.jgit.lib.ObjectReader$1.open(ObjectReader.java:302)
at org.eclipse.jgit.revwalk.RevWalk$2.next(RevWalk.java:951)
at org.eclipse.jgit.transport.UploadPack.parseWants(UploadPack.java:1054)
... 18 more
push:
com.google.gerrit.sshd.BaseCommand$Failure: fatal: Unpack error, check server log
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:159)
at com.google.gerrit.sshd.AbstractGitCommand.service(AbstractGitCommand.java:101)
at com.google.gerrit.sshd.AbstractGitCommand.access$000(AbstractGitCommand.java:32)
at com.google.gerrit.sshd.AbstractGitCommand$1.run(AbstractGitCommand.java:70)
at com.google.gerrit.sshd.BaseCommand$TaskThunk.run(BaseCommand.java:429)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:353)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Unpack error on project "qt-creator/tqtc-qt-creator":
AdvertiseRefsHook: org.eclipse.jgit.transport.AdvertiseRefsHookChain@6a24f077class org.eclipse.jgit.transport.AdvertiseRefsHookChain
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:158)
... 13 more
Caused by: org.eclipse.jgit.errors.UnpackException: Exception while parsing pack stream
at org.eclipse.jgit.transport.ReceivePack.service(ReceivePack.java:239)
at org.eclipse.jgit.transport.ReceivePack.receive(ReceivePack.java:160)
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:100)
... 13 more
Caused by: org.eclipse.jgit.errors.MissingObjectException: Missing delta base 25fa7c48fd6a3b94e3d7ab1961f698404dc71b1a
at org.eclipse.jgit.transport.PackParser.resolveDeltasWithExternalBases(PackParser.java:815)
at org.eclipse.jgit.transport.PackParser.parse(PackParser.java:515)
at org.eclipse.jgit.internal.storage.file.ObjectDirectoryPackParser.parse(ObjectDirectoryPackParser.java:194)
at org.eclipse.jgit.transport.BaseReceivePack.receivePack(BaseReceivePack.java:1038)
at org.eclipse.jgit.transport.BaseReceivePack.receivePackAndCheckConnectivity(BaseReceivePack.java:861)
at org.eclipse.jgit.transport.ReceivePack.service(ReceivePack.java:191)
... 15 more
"detaching" the repos with "git repack -a" makes the problem go away.
this seems similar to Issue 491 (though it seems overcomplicated to the point where i can't tell whether it's actually the same).