WatchService - Exposing more of the Inotify Event Model

Rémi Forax forax at univ-mlv.fr
Thu Sep 2 09:03:14 PDT 2010


Le 02/09/2010 17:00, Alan Bateman a écrit :
> f m wrote:
>> Per Alan B.'s request, I'm moving a discussion here that was started at
>> http://forums.java.net/jive/thread.jspa?threadID=152825&tstart=0 
>> <http://forums.java.net/jive/thread.jspa?threadID=152825&tstart=0>
>>
>> I'll try to summarize.
>>
>> A useful goal of the JDK7 WatchService is to provide a uniform file 
>> system event facility across multiple operating systems. However, in 
>> some cases, it may be more desirable to give up the portability in 
>> order to tap into the full expressiveness of the event model of the 
>> native OS. For example, Inotify on the Linux platform provides 
>> additional events not currently used by the LinuxWatchService 
>> implementation such as: IN_ACCESS, IN_CLOSE_WRITE, IN_CLOSE_NO_WRITE, 
>> and IN_OPEN.
>>
>> I gave one example at the above URI where an event like 
>> IN_CLOSE_WRITE could be used to detect and process a large file only 
>> after it has been completely copied into a watch directory.
>>
>> After looking over the internal LinuxWatchService.java source code, 
>> it appears that the implementation could be readily used (modified or 
>> resused?) to also provide access to these additional event types. 
>> Another event class representation like LinuxWatchEventKinds would 
>> need to be added and used alternatively to the StandardWatchEventKinds.
>>
>> My question. Would extending the LinuxWatchService capability to 
>> optionally expose the greater set of Inotify event types be in scope 
>> for JDK 7 development, or will client developers who desire this 
>> capability need to find 3rd party implementations (or develop it 
>> themselves)?
>>
>> Regards.
>>
> The API is designed to allow for events and modifiers that are defined 
> beyond the javadoc so provider implementations can include support for 
> other events if they wish. We haven't included any support for other 
> events in the JDK because our primary motive has been to help the 
> performance of applications that are forced to poll the file system 
> today. If you are looking for pointers then there is one 
> implementation specific modifier (com.nio.file.ExtendedWatchEvent)  
> that might help show you how additional support is included. You are 
> welcome to hack on the code and try out additional events but you have 
> to be a contributer to contribute patches [1].  A small comment on the 
> "close after write" event is that I don't think you are guaranteed 
> that the file isn't being modified by other entities. That might not 
> be a concern in your environment but just mentioning it.

Alan, yes, you're right,
see inotify FAQ: http://inotify.aiken.cz/?section=inotify&page=faq&lang=en

>
> -Alan.
>
> [1] http://openjdk.java.net/contribute/

Rémi


More information about the nio-dev mailing list