<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">On Dec 13, 2016, at 3:04 PM, Michael Hall <<a href="mailto:mik3hall@gmail.com">mik3hall@gmail.com</a>> wrote:<br><div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><blockquote type="cite" class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><div class=""><blockquote type="cite" class=""><div class=""><div class="">I had tried to write a native OS X watch service based on UKKQueue. [Ö]</div></div></blockquote><div class=""><br class=""></div><div class="">Without some study I could not at this point write anything of substance on the alternatives you discuss.</div></div></div></div></div></blockquote><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">Iíve raised the issue on the Cocoa dev list as well without any response there either. </span><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">What I have seems at least a working implementation with the one exception that I currently know of with the seeming deadlock where kqueue stops posting events during the re-poll in the LotsOfEvents test. Actually during the initial poll as well but there events that have processed prior to that so it doesnít immediately fail.</div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""></div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">I have been unable to come up with any idea why java code waiting on this poll causes the kernel code to stop working like this, and I havenít yet had any suggestions as to what might cause this.</div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">My code was based on looking at existing implementations. It includes an internal Poller class I think based on the SolarisWatchService. I know that has waits that do not hang kqueue.</div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""></div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Something extending or based on the PollingWatchService was sort of an idea given I simply currently canít resolve the kqueue stoppage. I guess I keep raising the issue every now and then hoping</div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">some kqueue expert will say, Ďwell, you can get a kqueue stoppage becauseÖí.</div></div></blockquote><div><br></div>As noted, I donít have the knowledge as yet to make any substantive comment.</div><div><br><blockquote type="cite"><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><div class=""><blockquote type="cite" class=""><div class=""><div class="">So, I guess I am, at this point,  simply throwing this out for any suggestions, concerns, thoughts - these would be appreciated. One reason I didnít keep going before is there really didnít seem to be that much interest. So just indicating that would be good in making it seem worth the effort.</div></div></blockquote><br class=""></div></div><div class="">There is definitely interest in this topic. There is for example a nearly five year old issue on file [1] to create a kqueue-based WatchService as you are suggesting.</div><div class=""><br class=""></div><div class="">Note that if you are interested in becoming an OpenJDK contributor it would be worth perusing [2].</div></div></div></blockquote><div class=""><br class=""></div>My current thought is just a working 3rd party implementation. Given that, if there was interest, I would of course be very pleased if the jdk would consider doing anything based on it. </div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">It might at least provide a demo for how something might be done for the OS X platform. The PollingWatchService is probably perfectly fine for almost all uses but there could be </div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">more specialized interest in a native implementation.</div></div></blockquote></div><br><div>The JDK team is happy to accept contributions from external developers as long as things adhere to the process in place for this. As noted we have been aware of the need for a kqueue-based implementation here and would like to see some movement on it, probably once the JDK 9 efforts wind down to a degree at least.</div><div><br></div><div>Thanks,</div><div><br></div><div>Brian</div></body></html>