]> source.dussan.org Git - jgit.git/commit
Add config parameter gc.prunePackExpire for packfile expiration 28/69628/1
authorChristian Halstrick <christian.halstrick@sap.com>
Tue, 29 Mar 2016 14:41:07 +0000 (16:41 +0200)
committerChristian Halstrick <christian.halstrick@sap.com>
Thu, 31 Mar 2016 14:11:02 +0000 (16:11 +0200)
commit74743bc547946bf5730b5caa45645804b2226d35
tree937a50e3962fa240b6a03475693837dea95a3daa
parent10135580d0842972c61daa3aa52493ea4c7d4485
Add config parameter gc.prunePackExpire for packfile expiration

JGit's Garbage Collector is repacking relevant objects into new
packfiles and is afterwards deleting the now obsolete packfiles. But to
prevent problems caused by race conditions JGit was not deleting
packfiles when they are too young. The same mechanism as for loose
objects and the config parameter gc.pruneExpire was used.
But JGit was reusing the parameter gc.pruneExpire also for packfiles
which may cause a lot of filesystem consumption if gc.pruneExpire was
set to the default of 2 weeks. Only two weeks after packfile creation gc
was allowed to delete this packfile.

This change introduces a new config paramter gc.prunePackExpire with a
default of "1.hour". This parameter is used when packfiles are deleted.
Only packfiles older than the specified time can be deleted.

For loose objects the behaviour is not changed and only the old
parameter gc.pruneExpire is relevant.

Change-Id: I6209efb05678b15153bd22479dc13486907a44f8
org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcBasicPackingTest.java
org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/pack/GcCommitSelectionTest.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java