Need reviewer for 6931216: TEST_BUG: test/java/nio/file/WatchService/LotsOfEvents.java failed with NPE

Alan Bateman Alan.Bateman at Sun.COM
Tue Mar 2 05:06:17 PST 2010


One of the WatchService tests failed with a NullPointerException in one 
of Kelly's test runs. It's a test issue and the fix is trivial. The 
reason for the NPE is that the test incorrectly assumes that the first 
batch of events will be read retrieved within 15s. The fix is to 
restructure the loops so that it checks the key at the beginning rather 
than the end.

Thanks,

-Alan.


diff -r 893034df4ec2 test/java/nio/file/WatchService/LotsOfEvents.java
--- a/test/java/nio/file/WatchService/LotsOfEvents.java Mon Mar 01 
18:00:47 2010 +0000
+++ b/test/java/nio/file/WatchService/LotsOfEvents.java Tue Mar 02 
12:58:07 2010 +0000
@@ -102,7 +102,7 @@ public class LotsOfEvents {
 
         int nread = 0;
         boolean gotOverflow = false;
-        do {
+        while (key != null) {
             List<WatchEvent<?>> events = key.pollEvents();
             for (WatchEvent<?> event: events) {
                 WatchEvent.Kind<?> kind = event.kind();
@@ -122,7 +122,7 @@ public class LotsOfEvents {
             if (!key.reset())
                 throw new RuntimeException("Key is no longer valid");
             key = watcher.poll(2, TimeUnit.SECONDS);
-        } while (key != null);
+        }
 
         // check that all expected events were received or there was an 
overflow
         if (nread < count && !gotOverflow)
@@ -168,7 +168,7 @@ public class LotsOfEvents {
                 // process events and ensure that we don't get repeated 
modify
                 // events for the same file.
                 WatchKey key = watcher.poll(15, TimeUnit.SECONDS);
-                do {
+                while (key != null) {
                     Set<Path> modified = new HashSet<Path>();
                     for (WatchEvent<?> event: key.pollEvents()) {
                         WatchEvent.Kind<?> kind = event.kind();
@@ -186,7 +186,7 @@ public class LotsOfEvents {
                     if (!key.reset())
                         throw new RuntimeException("Key is no longer 
valid");
                     key = watcher.poll(2, TimeUnit.SECONDS);
-                } while (key != null);
+                }
             }
 
         } finally {



More information about the nio-dev mailing list