Community
Participate
Working Groups
Steps: -GC was happening before pull/push Exception: java.lang.IllegalStateException: Bitmap at d7a9cd9f247243abaf8885a5a7a8e22a6081c0f6 is missing 6730b1e49c3213fd1988828f202d42fd6a06aada. at org.eclipse.jgit.internal.storage.pack.PackWriter.prepareBitmapIndex(PackWriter.java:2009) at org.eclipse.jgit.internal.storage.file.GC.writePack(GC.java:716) at org.eclipse.jgit.internal.storage.file.GC.repack(GC.java:522) at org.eclipse.jgit.internal.storage.file.GC.gc(GC.java:163) at org.eclipse.jgit.api.GarbageCollectCommand.call(GarbageCollectCommand.java:123)
also worth mentioning: this happens all the time on repos with at least 40.000 objects in them. This effectively blocks the whole garbage collection and repacking from happening, since the packwriter will refuse to do anything when the bitmaps can not be properly generated.
GC does not just "happen" in egit. It must be invoked by the user. I changed the importance since the bug does not (I believe) corrupt the repo or prevent other operations.
this happened in JGIT standalone. The scenario was like this: 2 local repositories: local-repo1 is cleaned using jgit-gc local-repo1 is cloned to local-repo2 <- repeat multiple times -> lots of commits on local-repo2 local-repo2 is cleaned using jgit-gc local-repo2 pulls from local-repo1 local-repo2's changes are pushed to local-repo1 <- end repeat -> after about 400 to 500 commits with about 20.000 objects created the GC will finally fail with the said stack trace.
For me it also looks like this bug is related to bug #403193. This leads to a repository corruption. I would vote for raising the priority for fixing this.
Shawn, Colby: Any idea what's going on here?
PackWriterBitmapPreparer selects a list of commits at which to place a bitmap. Then the commits are bitmaped in order by PackWriter. There is an optimization where we re-use the ObjectWalker if the current commit should contain the previous commit. The IllegalStateException throws when the sanity check fails. It is difficult to say what is exactly broken without getting the actual packs that are causing this error.
this was caused by a repository which had commits pointing to no longer existing blob objects