users@grizzly.java.net

RE: Problem with Suspend/Resume

From: Gay David (Annecy) <"Gay>
Date: Thu, 20 Jan 2011 14:42:38 +0100

Hi,

 

Ho yes, perfectly fine, thanks.

 

Regards, David

 

De : Oleksiy Stashok [mailto:oleksiy.stashok_at_oracle.com]
Envoyé : jeudi 20 janvier 2011 14:12
À : Gay David (Annecy)
Cc : users_at_grizzly.java.net
Objet : Re: Problem with Suspend/Resume

 

Hi David,

 

regarding the 1.9.29 release,

next week will be fine with you?

 

WBR,

Alexey.

 

On Jan 19, 2011, at 19:43 , Gay David (Annecy) wrote:





Hi Alexey,

 

I've checkout the trunk, recompile, and re-run my test case.

Everything now run fine with 1.9.29-SNAPSHOT ! Many thanks !

 

I'll do some others tests tomorrow and if ok try to integrate it in our real server.

 

BTW: do you know when you will release the 1.9.29 ?

 

 

Again, thanks you very much.

Regards, David.

 

 

De : Oleksiy Stashok [mailto:oleksiy.stashok_at_oracle.com]
Envoyé : mercredi 19 janvier 2011 18:16
À : Gay David (Annecy)
Cc : users_at_grizzly.java.net
Objet : Re: Problem with Suspend/Resume

 

Hi David,

 

fix is available on trunk.

Are you able to check it?

 

Thanks.

 

WBR,

Alexey.

 

On Jan 19, 2011, at 17:55 , Gay David (Annecy) wrote:






Hi Alexey,

 

Thanks you so much for the -very- quick response.

I've open the issue : http://java.net/jira/browse/GRIZZLY-958

 

 

Regards

David

 

 

De : Oleksiy Stashok [mailto:oleksiy.stashok_at_oracle.com]
Envoyé : mercredi 19 janvier 2011 17:32
À : Gay David (Annecy)
Cc : users_at_grizzly.java.net
Objet : Re: Problem with Suspend/Resume

 

Hi David,

 

I found the issue in Grizzly.

Can you pls. submit a bug and I'll provide the fix and a bit updated test code asap

 

Thanks.

 

WBR,

Alexey.

 

On Jan 19, 2011, at 16:32 , Gay David (Annecy) wrote:







Hi all,

 

I've got a problem with Grizzly with the Suspend/Resume mode.

I've write a small test trying to reproduce what's happen sometimes in our server.

(A whole Maven project is attached, just unzip and run 'mvn clean test' to reproduce it)

 

Basically this test suspend the response and delegate the computation of the request to a Thread pool executor and then resume the request.

 

While running the test, there are some error, most often there is a NPE here :

 

java.lang.NullPointerException

        at com.sun.grizzly.tcp.Response.resume(Response.java:784)

        at com.acme.MyExecutor.run(MyExecutor.java:55)

        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

        at java.lang.Thread.run(Thread.java:619)

 

(I made the test on windows XP with JDK 1.6.0_21)

 

I would like to know if someone has already see this problem ?

Is what I am doing just crazy ? ;-)

Do I misunderstand how to play with suspend/resume ?

Is there a problem in Grizzly ?

 

PS1 : I have better result if I add a small sleep here in the MyExecutor class :

 

...

    @Override

    public void run()

    {

        try

        {

            Thread.sleep( 5 );

            res.setStatus( 200 );

...

 

It sounds like a synchronize problem ?

 

PS2 : I also made the test on an Ubuntu, and I've other problems :

 

GRAVE: GRIZZLY0038: HTTP Processing error.

java.lang.NullPointerException

                at com.sun.grizzly.tcp.SuspendResponseUtils.attach(SuspendResponseUtils.java:61)

                at com.sun.grizzly.tcp.Response.suspend(Response.java:945)

                at com.sun.grizzly.tcp.Response.suspend(Response.java:884)

                at com.sun.grizzly.tcp.Response.suspend(Response.java:858)

                at com.sun.grizzly.tcp.Response.suspend(Response.java:841)

                at com.acme.MyAdapter.service(MyAdapter.java:34)

                at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:818)

                at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)

                at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1008)

                at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)

                at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)

                at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)

                at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)

                at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)

                at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)

                at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)

                at com.sun.grizzly.ContextTask.run(ContextTask.java:71)

                at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)

                at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)

                at java.lang.Thread.run(Thread.java:662)

19 janv. 2011 16:25:40 com.sun.grizzly.http.ProcessorTask parseRequest

GRAVE: GRIZZLY0041: Unblocking keep-alive exception.

java.lang.NullPointerException

                at com.sun.grizzly.tcp.http11.InternalInputBuffer.fill(InternalInputBuffer.java:768)

                at com.sun.grizzly.tcp.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:402)

                at com.sun.grizzly.http.ProcessorTask.parseRequest(ProcessorTask.java:851)

                at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:692)

                at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1008)

                at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)

                at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)

                at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)

                at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)

                at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)

                at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)

                at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)

                at com.sun.grizzly.ContextTask.run(ContextTask.java:71)

                at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)

                at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)

                at java.lang.Thread.run(Thread.java:662)

 

 

Thanks for any help or tips.

Regards

David

 

 

 

<GrizzlyTest.zip>