users@grizzly.java.net

RE: FW: Glassfish issue

From: Alex Kalnitski <akalnitski_at_interwise.com>
Date: Mon, 13 Feb 2012 11:09:08 +0000

Hi Alexey,
Thanks for the quick post,
According to the log that you have attached I don't see second client connection try (which actually cause to the issue), I only see one request, please correct me if I am wrong .
I just want to clarify on how to reproduce this issue ,
After the server side is running, you will need to start client twice in IDE (without stopping the first run)
Such action will start first client and put It to blocking state, when second client will try to create connection to the server, server will try to remove first client and the phenomena should be recreated .
I use GlassFish open source 3.1.1 build 12 and java jdk1.6.0_26


I am very appreciating you help !
Thanks a lot in advance.

Alex Kalnitski
Lead R&D Server Side
AT&T | Interwise




From: Oleksiy Stashok [mailto:oleksiy.stashok_at_oracle.com]
Sent: Monday, February 13, 2012 12:36 PM
To: Alex Kalnitski
Cc: users_at_grizzly.java.net
Subject: Re: FW: Glassfish issue

Hi Alex,

unfortunately I'm not able to reproduce the 100% CPU utilization, in the GF server.log I see the output [1] for each client run. Is it correct?
Just one thing I can suggest to try, instead of context.removeCometHandler(this), call context.resumeCometHandler(this)

Thanks.

WBR,
Alexey.


[1]
[#|2012-02-13T11:29:19.145+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=24;_ThreadName=Thread-2;|SERVER: Do POST |#]

[#|2012-02-13T11:29:19.146+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=24;_ThreadName=Thread-2;|Got Post request from ip 127.0.0.1|#]

[#|2012-02-13T11:29:19.146+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=24;_ThreadName=Thread-2;|SERVER: Session id = 6426caa9450f342ea80106ed7a38|#]

[#|2012-02-13T11:29:19.146+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=24;_ThreadName=Thread-2;|SERVER: Agent0|#]

[#|2012-02-13T11:29:19.147+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=24;_ThreadName=Thread-2;|{client=[Ljava.lang.String;@54e94480}|#]

[#|2012-02-13T11:29:19.147+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=24;_ThreadName=Thread-2;|SERVER: null|#]

[#|2012-02-13T11:29:19.147+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=24;_ThreadName=Thread-2;|client not exit , register client|#]

[#|2012-02-13T11:29:19.148+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=24;_ThreadName=Thread-2;|Connected from ip 127.0.0.1|#]

[#|2012-02-13T11:29:41.665+0100|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=13;_ThreadName=Thread-2;|Closing Agent connection as result|#]


On 02/12/2012 12:26 PM, Alex Kalnitski wrote:
Hi Alexey;

I have created two classes to reproduce this phenomenon of High CPU utilization .
One class is Agent - Client side and another class is Server side CometServlet .

To reproduce this situation you will need to run AgentLoader twice , such way it simulates the not properly disconnected client and actually creates the CPU high utilization .

Please let me know if it was successful and where maybe I am wrong

WBR
Alex Kalnitski
Lead R&D Server Side
AT&T | Interwise

From: Oleksiy Stashok [mailto:oleksiy.stashok_at_oracle.com]
Sent: Wednesday, January 25, 2012 5:33 PM
To: Alex Kalnitski
Cc: users_at_grizzly.java.net<mailto:users_at_grizzly.java.net>
Subject: Re: FW: Glassfish issue

Can you pls. create a testcase for this issue, so we can reproduce it?

Thanks.

WBR,
Alexey.

On 01/25/2012 04:26 PM, Alex Kalnitski wrote:
Thanks for the quick response
Our use case:
We are using comet to process mobile messages and in some corner cases we are getting after the issue occurs 100% CPU utilization .


1. Each mobile register to the Context with unique name

2. When mobile disconnects from server the connection released normally by utilizing the onTerminate() and removed from the engine .

3. When mobile device is shutdown and there is no normal device disconnection process, no event is received at the server side and methods onTerminate and onInterrupt are not invoked so the mobile remains registered in the CometEngine.

4. When mobile try to reconnect we find out that the same context name already exist in the system so need to removed it manually by invoking CometEngine.getEngine().unregister(contextPath);

5. Executing this action cause CPU jump to 100% and stay there until the java process is killed .




Is this issue is known?

Please advice, maybe I am using it in wrong way , I also saw that in new version some methods are deprecated, but I don't understand how to integrated it to the glassfish server .


WBR

Alex Kalnitski
Lead R&D Server Side
AT&T | Interwise


From: Oleksiy Stashok [mailto:oleksiy.stashok_at_oracle.com]
Sent: Wednesday, January 25, 2012 4:00 PM
To: Alex Kalnitski
Cc: users_at_grizzly.java.net<mailto:users_at_grizzly.java.net>
Subject: Re: FW: Glassfish issue

Hi Alex,

you can send issue details to users_at_grizzly.java.net<mailto:users_at_grizzly.java.net> (CC'ed) and we'll try to help.

Thanks.

WBR,
Alexey.

On 01/25/2012 02:55 PM, Alex Kalnitski wrote:
Hi ;
We are using an Glassfish server open source edition v3.1.1 for our benchmarking with Comet technology and we have something that looks like a bug .
Please advice what should I do next and where should I go further .
BR
Alex
Lead R&D
AT&T Interties .