[undertow-dev] what I do wrong?
Jason Greene
jason.greene at redhat.com
Wed Feb 19 17:47:10 EST 2014
It all depends on how the web browser manages connections. Some prefer to reuse aggressively and others don’t.
The way the undertow architecture works, is that every connection is assigned to an I/O thread for as long as that connection is alive. When there is data available the I/O thread will wake up and process that data, and trigger a call to your handler, and move on to other ready connections.
On Feb 19, 2014, at 11:53 AM, Mikhail Tyamin <mikhail.tiamine at gmail.com> wrote:
> Hi,
>
> you are right! I tried with Safari and it works as expected.
>
> Maybe somebody from undertow's team could explain why?
>
> Best,
> Mikhail
>
> Best,
> Mikhail
>
>
> 2014-02-18 16:50 GMT+02:00 lanabe <lanabe.lanabe at gmail.com>:
> Hi, Mikhail.
>
> I got the same log.
>
> [environment]
> Undertow: io.undertow:undertow-core:1.0.0.Final
> OS: Fedora19(64bit)
> JDK: OpenJDK 1.7.0_51
> Client: Google Chrome 32.0.1700.107, Firefox 26.0
>
> ---
> Thread #XNIO-1 I/O-1 is I/O : handle this
> Thread #XNIO-1 task-1 Start waiting
> Thread #XNIO-1 task-1 Finish waiting
>
> Thread #XNIO-1 I/O-1 is I/O : handle this
> Thread #XNIO-1 task-2 Start waiting
> Thread #XNIO-1 task-2 Finish waiting
>
> Thread #XNIO-1 I/O-1 is I/O : handle this
> Thread #XNIO-1 task-3 Start waiting
> Thread #XNIO-1 task-3 Finish waiting
> ---
>
> but, I got the expected following log by using curl.
> ---
> Thread #XNIO-1 I/O-1 is I/O : handle this
> Thread #XNIO-1 task-1 Start waiting
> Thread #XNIO-1 I/O-1 is I/O : handle this
> Thread #XNIO-1 task-2 Start waiting
> Thread #XNIO-1 I/O-2 is I/O : handle this
> Thread #XNIO-1 task-3 Start waiting
> Thread #XNIO-1 task-1 Finish waiting
>
> Thread #XNIO-1 task-2 Finish waiting
>
> Thread #XNIO-1 task-3 Finish waiting
> ---
>
> hmm...Does it depends on browser settings?
>
> Yoshimasa Tanabe
>
>
> On Tue, Feb 18, 2014 at 3:10 PM, Mikhail Tyamin <mikhail.tiamine at gmail.com> wrote:
> Hi,
>
> I am pretty sure, 15 sec. delay is enough to open additional browsers windows ;-)
>
> I try to run code with io.undertow:undertow-core:1.0.0.Final on mac with OS X 10.9.1 with jdk 1.7.0_51.
>
> So, could anybody reproduce this issue or give me feedback where is my error?
>
> Best,
> Mikhail
>
>
> 2014-02-18 5:22 GMT+02:00 Stuart Douglas <sdouglas at redhat.com>:
>
> Are you sure the requests are actually being made simultaneously? That code should definitely work.
>
> Stuart
>
>
> ----- Original Message -----
> > From: "Mikhail Tyamin" <mikhail.tiamine at gmail.com>
> > To: undertow-dev at lists.jboss.org
> > Sent: Monday, 17 February, 2014 3:03:41 PM
> > Subject: [undertow-dev] what I do wrong?
> >
> > Hello guys,
> >
> > could you help me a little bit with Undertow?
> >
> > I follow all instructions in Undertown's poor documentation. So here is the
> > class :
> >
> > public class HelloWorldServer {
> >
> > public static void main(String... args) {
> > Undertow server = Undertow.builder()
> > .addHttpListener(8080, "localhost")
> > .setHandler(new HttpHandler() {
> > @Override
> > public void handleRequest(final HttpServerExchange exchange) throws Exception
> > {
> > if (exchange.isInIoThread()) {
> > System.out.println("Thread #" + Thread.currentThread().getName() + " is I/O :
> > handle this");
> > exchange.dispatch(this);
> > return;
> > }
> >
> > //[1]
> > System.out.println("Thread #" + Thread.currentThread().getName() + " Start
> > waiting");
> > Thread.sleep(15000);
> > System.out.println("Thread #" + Thread.currentThread().getName() + " Finish
> > waiting");
> >
> > System.out.println();
> >
> > exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
> > exchange.getResponseSender().send("Hello world from thread " +
> > Thread.currentThread().getId());
> > //[2]
> > }
> > }).build();
> >
> > server.start();
> > }
> > }
> >
> > When I start it and make three http get request simultaneously I can see this
> > output in console :
> >
> > Thread #XNIO-1 I/O-1 is I/O : handle this
> > Thread #XNIO-1 task-1 Start waiting
> > Thread #XNIO-1 task-1 Finish waiting
> >
> > Thread #XNIO-1 I/O-1 is I/O : handle this
> > Thread #XNIO-1 task-2 Start waiting
> > Thread #XNIO-1 task-2 Finish waiting
> >
> > Thread #XNIO-1 I/O-1 is I/O : handle this
> > Thread #XNIO-1 task-3 Start waiting
> > Thread #XNIO-1 task-3 Finish waiting
> >
> >
> > I think that code beetween //[1] and //[2] should perform in separate thread
> > (and as we can see from the console it really does), but why the main I/O
> > thread are waiting and does not handle other requests?
> >
> > So if my code is correct than it means that Undertow could handle one request
> > in time...
> >
> > What I do wrong?
> >
> > Best,
> > Mikhail
> >
> > _______________________________________________
> > undertow-dev mailing list
> > undertow-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/undertow-dev
>
>
> _______________________________________________
> undertow-dev mailing list
> undertow-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/undertow-dev
>
>
> _______________________________________________
> undertow-dev mailing list
> undertow-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/undertow-dev
--
Jason T. Greene
WildFly Lead / JBoss EAP Platform Architect
JBoss, a division of Red Hat
More information about the undertow-dev
mailing list