Skip to content
Permalink
Browse files

[JENKINS-42934] Actually use Java's file locking API to lock the file…

… on windows
  • Loading branch information
stephenc committed Mar 21, 2017
1 parent 211bb29 commit 218d0a55169aa030646e4f7a0469e9ce8fe2c93f
Showing with 9 additions and 2 deletions.
  1. +9 −2 core/src/test/java/hudson/UtilTest.java
@@ -24,7 +24,10 @@
*/
package hudson;

import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.file.Files;
import java.nio.file.StandardOpenOption;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
@@ -491,9 +494,13 @@ private void lockFileForDeletion(File f) throws IOException, InterruptedExceptio
// On unix, can't use "chattr +u" because ext fs ignores it.
// On Windows, we can't delete files that are open for reading, so we use that.
assert Functions.isWindows();
final InputStream s = Files.newInputStream(f.toPath());
final FileChannel channel = FileChannel.open(f.toPath(), StandardOpenOption.READ, StandardOpenOption.WRITE);
final FileLock lock = channel.lock();
unlockFileCallables.put(f, new Callable<Void>() {
public Void call() throws IOException { s.close(); return null; };
public Void call() throws IOException {
lock.release();
channel.close();
return null; };
});
}

0 comments on commit 218d0a5

Please sign in to comment.
You can’t perform that action at this time.