From 6dd4add35e5ead2005ff3e54e356a8b92bdf69a6 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Wed, 13 Jan 2021 14:08:16 +0100 Subject: [PATCH] Raise watch service sensitivity, add a delay in the test for windows to make sure the poll has been done --- .../mvnd/cache/factory/WatchServiceCacheFactory.java | 11 ++++++++++- .../org/mvndaemon/mvnd/it/DeleteRepoNativeIT.java | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/factory/WatchServiceCacheFactory.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/factory/WatchServiceCacheFactory.java index c00ebb83..343d50f2 100644 --- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/factory/WatchServiceCacheFactory.java +++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/factory/WatchServiceCacheFactory.java @@ -88,8 +88,17 @@ public class WatchServiceCacheFactory extends AbstractLogEnabled implements Cach getLogger().debug("Starting to watch path " + key); } try { + WatchEvent.Modifier[] mods; + try { + mods = new WatchEvent.Modifier[] { + com.sun.nio.file.SensitivityWatchEventModifier.HIGH + }; + } catch (Throwable t) { + mods = null; + } final WatchKey watchKey = key.register(watchService, - StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY); + new WatchEvent.Kind[] { StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY }, + mods); return new Registration(watchKey); } catch (IOException e) { throw new RuntimeException(e); diff --git a/integration-tests/src/test/java/org/mvndaemon/mvnd/it/DeleteRepoNativeIT.java b/integration-tests/src/test/java/org/mvndaemon/mvnd/it/DeleteRepoNativeIT.java index ccb289b1..85f5651c 100644 --- a/integration-tests/src/test/java/org/mvndaemon/mvnd/it/DeleteRepoNativeIT.java +++ b/integration-tests/src/test/java/org/mvndaemon/mvnd/it/DeleteRepoNativeIT.java @@ -44,6 +44,10 @@ public class DeleteRepoNativeIT { client.execute(o1, "clean", "install", "-e", "-B").assertSuccess(); TestUtils.deleteDir(localMavenRepo, Os.current() != Os.WINDOWS); + if (Os.current() == Os.WINDOWS) { + // On windows, we're using the service watcher which polls every 2s by default + Thread.sleep(2500); + } final TestClientOutput o2 = new TestClientOutput(); client.execute(o2, "clean", "install", "-e", "-B").assertSuccess();