ObjectDirectory: Factor a method to close open pack handles
Change-Id: I9490c4583fdf801de9c0bb09595ebb8fb4926988
This commit is contained in:
parent
5b5c3a2e1d
commit
5ce1cc3d43
|
@ -1173,16 +1173,7 @@ public int compare(PackExt o1, PackExt o2) {
|
|||
// rename the temporary files to real files
|
||||
File realPack = nameFor(id, ".pack"); //$NON-NLS-1$
|
||||
|
||||
// if the packfile already exists (because we are rewriting a
|
||||
// packfile for the same set of objects maybe with different
|
||||
// PackConfig) then make sure we get rid of all handles on the file.
|
||||
// Windows will not allow for rename otherwise.
|
||||
if (realPack.exists())
|
||||
for (PackFile p : repo.getObjectDatabase().getPacks())
|
||||
if (realPack.getPath().equals(p.getPackFile().getPath())) {
|
||||
p.close();
|
||||
break;
|
||||
}
|
||||
repo.getObjectDatabase().closeAllPackHandles(realPack);
|
||||
tmpPack.setReadOnly();
|
||||
|
||||
FileUtils.rename(tmpPack, realPack, StandardCopyOption.ATOMIC_MOVE);
|
||||
|
|
|
@ -969,6 +969,21 @@ private Set<String> listPackDirectory() {
|
|||
return nameSet;
|
||||
}
|
||||
|
||||
void closeAllPackHandles(File packFile) {
|
||||
// if the packfile already exists (because we are rewriting a
|
||||
// packfile for the same set of objects maybe with different
|
||||
// PackConfig) then make sure we get rid of all handles on the file.
|
||||
// Windows will not allow for rename otherwise.
|
||||
if (packFile.exists()) {
|
||||
for (PackFile p : getPacks()) {
|
||||
if (packFile.getPath().equals(p.getPackFile().getPath())) {
|
||||
p.close();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AlternateHandle[] myAlternates() {
|
||||
AlternateHandle[] alt = alternates.get();
|
||||
if (alt == null) {
|
||||
|
|
Loading…
Reference in New Issue