Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jgit-dev] Files remaining locked after repository close in Windows

I've seen several posts about repository locking from the eGit side but haven't really seen any solutions.

I'm using jgit 2.1.0.201209190230-r.

The following code fails in windows because some .pack files remain locked until my VM closes.  Any ideas what I'm doing wrong?  Here is a test case going against a test github repository I have set up so you should be able to just copy and run.

Any ideas?

File tempDir = Files.createTempDirectory("temp_git_repo").toFile();
tempDir.mkdirs();
System.out.println("Clone Dir: " + tempDir.toString());
Git git = null;
try {
git = Git
.cloneRepository()
.setDirectory(tempDir).call();
} finally {
if(git != null) {
git.getRepository().close();
}
Files.walkFileTree(tempDir.toPath(),
new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) throws IOException {
Files.delete(file);
return FileVisitResult.CONTINUE;
}

@Override
public FileVisitResult postVisitDirectory(Path dir,
IOException e) throws IOException {
Files.delete(dir);
return FileVisitResult.CONTINUE;
}
});
Files.delete(tempDir.toPath());


The error I see in windows is:

Exception in thread "main" java.nio.file.AccessDeniedException: C:\Users\YOUNGS~1\AppData\Local\Temp\temp_git_repo752040393604081653\.git\objects\pack\pack-1edb465f57d546b7c6343b02c151cb3bdd68ef87.idx
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:268)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1077)
at TestGitClone$1.visitFile(TestGitClone.java:33)
at TestGitClone$1.visitFile(TestGitClone.java:1)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:135)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:199)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:199)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:199)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:199)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:69)
at java.nio.file.Files.walkFileTree(Files.java:2591)
at java.nio.file.Files.walkFileTree(Files.java:2624)
at TestGitClone.main(TestGitClone.java:28)

Back to the top