diff --git a/src/java.base/linux/classes/sun/nio/fs/LinuxWatchService.java b/src/java.base/linux/classes/sun/nio/fs/LinuxWatchService.java --- a/src/java.base/linux/classes/sun/nio/fs/LinuxWatchService.java +++ b/src/java.base/linux/classes/sun/nio/fs/LinuxWatchService.java @@ -322,19 +322,6 @@ bytesRead = 0; } - // process any pending requests - if ((nReady > 1) || (nReady == 1 && bytesRead == 0)) { - try { - read(socketpair[0], address, BUFFER_SIZE); - boolean shutdown = processRequests(); - if (shutdown) - break; - } catch (UnixException x) { - if (x.errno() != UnixConstants.EAGAIN) - throw x; - } - } - // iterate over buffer to decode events int offset = 0; while (offset < bytesRead) { @@ -369,6 +356,20 @@ offset += (SIZEOF_INOTIFY_EVENT + len); } + + // process any pending requests + if ((nReady > 1) || (nReady == 1 && bytesRead == 0)) { + try { + read(socketpair[0], address, BUFFER_SIZE); + boolean shutdown = processRequests(); + if (shutdown) + break; + } catch (UnixException x) { + if (x.errno() != UnixConstants.EAGAIN) + throw x; + } + } + } } catch (UnixException x) { x.printStackTrace();