[undertow-dev] Undertow and non-blocking File IO

Stuart Douglas sdouglas at redhat.com
Wed Nov 25 16:27:42 EST 2015



----- Original Message -----
> From: "Andrew Brampton" <me at bramp.net>
> To: undertow-dev at lists.jboss.org
> Sent: Wednesday, 25 November, 2015 4:13:03 PM
> Subject: [undertow-dev] Undertow and non-blocking File IO
> 
> I just started playing with Undertow, but I had a couple of questions about
> the use of non-blocking operations vs using the worker thread pool.
> 
> In the ResourceHandler.java it appears to dispatch itself onto a worker
> thread, and then uses blocking file IO to actually read the file. I'm
> curious why a AsynchronousFileChannel wasn't used to read from the file in a
> non-blocking way? This would be in keeping with the non-blocking IO threads.

This is something we should look at, however this only has an actual benefit on Windows AFAIK. Other platforms use SimpleAsynchronousFileChannelImpl which simply delegates to a thread pool.

> 
> I wrote a quick HttpHandler that used the AsynchronousFileChannel and it
> worked really well. However, when creating AsynchronousFileChannel you have
> to specify the ExecutorService to be used to schedule the completion handler
> callback on. I was able to use exchange.getIoThread().getWorker(), but I'm
> curious if there is a way to schedule it back on the IO Threads? It just
> seems "purer" keeping everything on a single IO thread per core.

The IO threads implement Executor not ExecutorService, you could write a wrapper, but if you used it on non Windows platforms you would block the IO thread.

Stuart

> 
> thanks
> Andrew
> 
> _______________________________________________
> undertow-dev mailing list
> undertow-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/undertow-dev


More information about the undertow-dev mailing list