7060790: (fs) FileSystem.newWatchService error message confusing when maximum inotify descriptors reached (original) (raw)

Alan Bateman Alan.Bateman at oracle.com
Sat Aug 27 06🔞00 PDT 2011


This is a minor tweak to the WatchService implementation on Linux so that it prints a more useful message in the event that the system is out of inotify instances. The errno when inotify_init fails in this case is EMFILE and so the IOException is thrown with "Too many open files" which can be confused with running out of file descriptors. The patch simple translates this error into a more useful message to aid diagnosing the issue. I don't propose to include a test with this as tests that check exception message tend to be too fragile.

Thanks, Alan.

diff --git a/src/solaris/classes/sun/nio/fs/LinuxWatchService.java b/src/solaris/classes/sun/nio/fs/LinuxWatchService.java --- a/src/solaris/classes/sun/nio/fs/LinuxWatchService.java +++ b/src/solaris/classes/sun/nio/fs/LinuxWatchService.java @@ -58,7 +58,10 @@ class LinuxWatchService try { ifd = inotifyInit(); } catch (UnixException x) {

open files" :

diff --git a/src/solaris/native/sun/nio/fs/genUnixConstants.c b/src/solaris/native/sun/nio/fs/genUnixConstants.c --- a/src/solaris/native/sun/nio/fs/genUnixConstants.c +++ b/src/solaris/native/sun/nio/fs/genUnixConstants.c @@ -108,6 +108,7 @@ int main(int argc, const char* argv[]) { DEF(EROFS); DEF(ENODATA); DEF(ERANGE);

#if defined(AT_SYMLINK_NOFOLLOW) && defined(AT_REMOVEDIR)



More information about the nio-dev mailing list