<div dir="ltr">If there are licencing issues, maybe a standalone watcher would be enough?  Looking at the command line you used, I get the impression that you had to reimplement a significant par of the API (Paths and stuff) for this service (and other Mac-specific stuff).<br>

<div class="gmail_extra"><br><br><div class="gmail_quote">On 9 August 2014 22:21, Michael Hall <span dir="ltr"><<a href="mailto:mik3hall@gmail.com" target="_blank">mik3hall@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word"><div class=""><div>On Aug 9, 2014, at 2:58 PM, Christopher Brown <<a href="mailto:christopherbrown06@gmail.com" target="_blank">christopherbrown06@gmail.com</a>> wrote:</div><br><blockquote type="cite">

<div dir="ltr"><div><div>Hi Michael,<br><br></div>I'm looking for a non-polling solution that can ideally send a notification within around 200ms (seems to be the approximate time taken by other implementations) that doesn't fail under load (we're talking tens of events, not hundreds or thousands).  Your implementation might meet these requirements although I've already looking (briefly) at trz, and couldn't see how I was supposed to integrate it into an application compared with the default "Path" filesystem.<br>

<br></div>I'm guessing that your solution might resist the "load" issues I've met with JXFileWatcher, despite the test failure you referred to (which seemed to indicate that the test had defects itself).</div>

</blockquote><div><br></div></div>Christopher,<div><br></div><div>I am looking at this again. Picked up where I left off surprisingly quickly. The problem hasn't changed.</div><div>Usage for what I'm doing now is something like…</div>

<div>java -cp lib/macnio2.jar -Djava.nio.file.spi.DefaultFileSystemProvider=us.hall.trz.osx.MacFileSystemProvider LotsOfEvents</div><div>You may additionally need…</div><div><div><span style="white-space:pre-wrap">            </span>System.setProperty("mac.watchservice","kqueue");</div>

</div><div>in your code. I was considering an FSEvent implementation as well for another mac.watchservice.</div><div><br></div><div>This is what the code processed on the last test before the first test wait…</div><div>LotsOfEvents before repoll num read 22 thread Thread[Test Thread,5,main]</div>

<div>before the first wait. You might or might not have problems with 'tens of events'.</div><div><br></div><div>Some of this is based very closely off java source that is not classpath exception. This was necessary because some of the access restrictions seemed to need loosening. It might be 3rd party implementations of WatchServices were not anticipated. I'm not sure what that might imply for serious use regarding licensing. </div>

<div><br></div><div>I was thinking maybe kqueue and my code both ran off of the main thread so when the code waited the kqueue stopped. But I changed the test to run off a different thread with no improvement. I just changed the wait from a LinkedBlockingDeque poll to a Object wait with the same result. It seems any java wait (at least at this point) causes kqueue to stop posting? Seems strange to me that a random wait on an arbitrary java Thread would halt kqueue.   Anyhow I'm back to thinking about trying a timer callback to avoid the hard wait. Might still get it working somehow.</div>

<div class=""><div><br></div><div><br><div>
<span style="border-collapse:separate;border-spacing:0px"><span style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word">

<span style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word">

<div style="font-weight:normal">Michael Hall</div><div style="font-weight:normal"><br></div><div><b>trz<span> </span></b>nio.2 for OS X <a href="http://www195.pair.com/mik3hall/index.html#trz" style="font-weight:normal" target="_blank">http://www195.pair.com/mik3hall/index.html#trz</a></div>

<div style="font-weight:normal"><br></div><div><b>HalfPipe<span> </span></b>Java 6/7 shell app <a href="http://www195.pair.com/mik3hall/index.html#halfpipe" target="_blank">http://www195.pair.com/mik3hall/index.html#halfpipe</a></div>

<div><br></div><div><b>AppConverter<span> </span></b>convert Apple jvm to openjdk apps <a href="http://www195.pair.com/mik3hall/index.html#appconverter" target="_blank">http://www195.pair.com/mik3hall/index.html#appconverter</a></div>

</div></span><br></div></span><br></span><br>
</div>
<br><div><blockquote type="cite"><div dir="ltr"><br><br>

<div class="gmail_extra"><br></div><div class="gmail_extra">Thanks,<br></div><div class="gmail_extra">Christopher<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 9 August 2014 02:19, Michael Hall <span dir="ltr"><<a href="mailto:mik3hall@gmail.com" target="_blank">mik3hall@gmail.com</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div>On Aug 8, 2014, at 5:35 AM, Christopher Brown <<a href="mailto:christopherbrown06@gmail.com" target="_blank">christopherbrown06@gmail.com</a>> wrote:</div>



<br><blockquote type="cite"><div dir="ltr"><div>In any case, if there's something to test already, I'm happy to try it out.  If not, it would be helpful to know if it's planned for a specific JDK9 build because current workarounds all have big shortcomings.</div>



</div></blockquote><div><br></div></div><div>You don't specify what kind of native implementation you are looking for? Just something non-polling?</div>Not official for any java but I attempted a kqueue based WatchService on OS X as part of my trz package mentioned below.<div>



It passed the basic tests included with the nio2 distribution but didn't pass the LotsOfEvents one.</div><div>At some point the test went into a wait to allow the WatchService to process more events. Unfortunately for my implementation when it went into this wait kqueue also went into a wait, processing no more additional events. When that wait timed out, the test failed because it had not processed enough events and hadn't received anymore. Interestingly at that point, after the exception, kqueue resumed pumping events. So the java itself waiting seemed to stop the whole thing. </div>



<div>Where I left it as best I remember. Probably pretty messy after one or two attempts to debug. Basic tests might not even pass now.</div><div>I thought about fudging the test to handle the waiting differently but it didn't really seem right that this should be necessary for my implementation.</div>



<div><br></div><div>I'm more interested in machine learning these days. Kaggle competitions for one thing, a nice level playing field, no fudging needed.</div><div><br></div><div>But maybe if one more person indicated an interest I'd consider that a 'clamor' and get back into this one more time. FSEvents was another possibility as I remember for an implementation I was going to try. Might not have the kqueue problems.</div>



<div><br></div><div><div>
<span style="border-collapse:separate;border-spacing:0px"><span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word">



<span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word">



<div style="font-weight:normal">Michael Hall</div><div style="font-weight:normal"><br></div><div><b>trz<span> </span></b>nio.2 for OS X <a href="http://www195.pair.com/mik3hall/index.html#trz" style="font-weight:normal" target="_blank">http://www195.pair.com/mik3hall/index.html#trz</a></div>



<div style="font-weight:normal"><br></div><div><b>HalfPipe<span> </span></b>Java 6/7 shell app <a href="http://www195.pair.com/mik3hall/index.html#halfpipe" target="_blank">http://www195.pair.com/mik3hall/index.html#halfpipe</a></div>



<div><br></div><div><b>AppConverter<span> </span></b>convert Apple jvm to openjdk apps <a href="http://www195.pair.com/mik3hall/index.html#appconverter" target="_blank">http://www195.pair.com/mik3hall/index.html#appconverter</a></div>



</div></span><br></div></span><br></span><br>
</div>
<br></div></div></blockquote></div><br></div></div>
</blockquote></div><br></div></div></div></blockquote></div><br></div></div>