Steve,
At my first look, I felt like you were facing the issue that Peter have
pointed out.
Taking a deeper look into your code, I found out what you have explained on
your last email (line 47 of your source code).
You are right, it seems that you aren't blocking your IO threads.
Just keep in mind that it will always dispatch your request into a Worker
thread. By design, HttpHandler could be nested in a chain of handlers, and
some built in HttpHandlers will dispatch your request into a Worker thread
(as AuthenticationCallHandler, per example). Thus, if you plan to wrap your
requests with such handlers all of your requests will be dispatched into
Worker threads twice per request. To avoid this, you should apply the fix
that Peter have suggested already.
Regards,
Miere
On Mon, Aug 31, 2015 at 1:08 PM Steve Logue <bitvector2(a)gmail.com> wrote:
Thanks for looking - how does it look now? This is actually what I
had
beforehand at some point. Now it uses a lambda statement to dispatch to
the handler method on a worker thread.
-STEVEl
On Mon, Aug 31, 2015 at 5:40 AM, peter royal <peter.royal(a)pobox.com>
wrote:
> You are blocking the IO thread in each of your handlers.
>
>
>
> When each handler is a class, you can do:
>
>
>
> if( exchange.isInIoThread()) {
>
> exchange.dispatch(this);
>
> return;
>
> }
>
>
>
> but since you are using lambda's, that won't work. In this case, you
> might want to just pass a Runnable to exchange.dispatch()
>
>
>
> that will put you on a worker pool thread where it is safe to block on
> the Await.result call.
>
>
>
> an alternate (but lacking the timeout option) method I use is to leverage
> the JDK8 CompletableFuture and use .thenAccept / .exceptionally to return
> the response when available.
>
>
>
> -pete
>
>
>
>
>
>
>
>
>
> On 2015-08-29 21:00, Steve Logue wrote:
>
> Hi Folks, I'm definitely new to Undertow and super impressed with it.
> However the docs are a bit thin in regards to using the RoutingHandler and
> doing full async processing. May I ask for a quick check of my approach to
> using Undertow and trying not to block anywhere:
>
>
>
https://github.com/bitvector2/microservice2/blob/master/src/main/java/org...
>
> -STEVEl
>
>
> --
>
>
http://www.bitvector.org/
>
> _______________________________________________
> undertow-dev mailing list
> undertow-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/undertow-dev
>
>
> --
> (peter.royal|osi)(a)pobox.com -
http://fotap.org/~osi
>
--
http://www.bitvector.org/
_______________________________________________
undertow-dev mailing list
undertow-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/undertow-dev