jgit/org.eclipse.jgit.test
Martin Fick 6167641834 Restore preserved packs during missing object seeks
Provide a recovery path for objects being referenced during the pack
pruning race. Due to the pack pruning race, it is possible for objects
to become referenced after a pack has been deemed safe to prune, but
before it actually gets pruned. If this happened previously, the newly
referenced objects would be missing and potentially result in a
corrupted ref.

Add the ability to recover from this situation when an object is missing
but happens to still be available in a pack in the "preserved"
directory. This is likely only useful when used in conjunction with the
--preserve-old-packs GC option, which prunes packs by hard-linking to
the preserved directory. If an object is missing and found in a pack in
the preserved directory, immediately recover that pack and its
associated files (idx, bitmaps...) by moving them back to the original
pack directory, and then retry the operation that would have failed due
to the missing object. This retry can now succeed and the repository
may avoid corruption. This approach should drastically reduce the
chance of a corrupt repository during pack pruning at very little extra
cost. This extra cost should only be incurred when objects are missing
and a failure would normally occur.

Change-Id: I2a704e3276b88cc892159d9bfe2455c6eec64252
Signed-off-by: Martin Fick <quic_mfick@quicinc.com>
Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>
2021-03-04 22:31:40 +01:00
..
.settings [spotbugs] Silence CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE in jgit tests 2020-12-22 10:53:00 +01:00
META-INF Move reachability checker generation into the ObjectReader object 2021-01-28 22:17:26 -08:00
exttst/org/eclipse/jgit Merge branch 'stable-5.6' 2020-02-22 23:36:08 +01:00
findBugs [spotbugs] Silence CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE in jgit tests 2020-12-22 10:53:00 +01:00
src/org/eclipse/jgit Decouple JSch from JGit Core 2020-06-01 01:46:59 +02:00
tst/org/eclipse/jgit Restore preserved packs during missing object seeks 2021-03-04 22:31:40 +01:00
tst-rsrc HTTP: cookie file stores expiration in seconds 2021-03-03 00:26:51 +01:00
.classpath Decouple JSch from JGit Core 2020-06-01 01:46:59 +02:00
.gitignore Fix test setup for Eclipse Photon and greater 2018-11-02 18:50:26 +01:00
.project Remove references to org.eclipse.jgit.java7 2016-08-05 11:22:27 +09:00
BUILD Bazel: Remove unused resources variable 2021-02-07 23:06:25 +01:00
build.properties Update slf4j to 1.7.30 2020-10-28 12:24:35 +01:00
org.eclipse.jgit.core--All-Tests (Java 8) (de).launch Fixed few locale dependent pgm tests 2016-01-02 17:41:58 +01:00
org.eclipse.jgit.core--All-Tests (Java 8).launch Fix classpath of test launch configurations 2015-11-21 00:33:43 +01:00
org.eclipse.jgit.core--All-Tests.launch Use JUnit4 for tests 2010-08-26 12:26:38 -05:00
org.eclipse.jgit.test-WalkEncryptionTest-Proxy.launch Adding AES Walk Encryption support in http://www.jets3t.org/ mode 2015-10-18 19:14:31 +00:00
org.eclipse.jgit.test-WalkEncryptionTest.launch Adding AES Walk Encryption support in http://www.jets3t.org/ mode 2015-10-18 19:14:31 +00:00
plugin.properties Fix bundle localization of Apache SSH bundle 2019-06-21 17:54:06 +02:00
pom.xml Prepare 5.11.0-SNAPSHOT builds 2020-12-02 15:57:16 +01:00
tests.bzl Decouple JSch from JGit Core 2020-06-01 01:46:59 +02:00