You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by Aaron Mulder <am...@alumni.princeton.edu> on 2003/10/19 04:09:39 UTC

JMX Communication Problems

	I've gotten the JSR-88 command-line client a little further, to 
the point where I make 6 or 8 JMX calls when I'm working with it.  This 
often fails with a timeout error, but not always.  Lately, when I start 
the Geronimo server, the first time I fire up the client it fails, but if 
I then restart it it works OK.

	When I fire up the client and it fails, the server prints 
something like this:

    [java] 13:40:09,793 DEBUG [ChannelPool] channel connecting to: 
async://(hostname):35649

	When the client works, the server doesn't print that.

	When the client fails, it hangs for a while (30 seconds or 
something, I'm not exactly sure), and then I get something like this:

org.apache.geronimo.remoting.transport.TransportException: Request time 
out.
        at 
org.apache.geronimo.remoting.transport.async.ChannelPool.sendRequest(ChannelPool.java:459)
        at 
org.apache.geronimo.remoting.transport.async.AsyncClient.sendRequest(AsyncClient.java:93)
        at 
org.apache.geronimo.remoting.transport.RemoteTransportInterceptor.invoke(RemoteTransportInterceptor.java:97)
        at 
org.apache.geronimo.remoting.MarshalingInterceptor.invoke(MarshalingInterceptor.java:80)
        at 
org.apache.geronimo.proxy.SimpleRPCContainer.invoke(SimpleRPCContainer.java:84)
        at 
org.apache.geronimo.proxy.ProxyContainer.invoke(ProxyContainer.java:85)
        at $Proxy0.invoke(Unknown Source)
        at 
org.apache.geronimo.enterprise.deploy.server.JmxServerConnection.getAvailableModules(JmxServerConnection.java:52)


	Note that all of this is with the client and server running on the 
same machine, with a host name that resolves to 127.0.0.1.  For most of 
the day I was not on the internet at all, but being online doesn't seem to 
help.

Aaron


Re: JMX Communication Problems

Posted by Hiram Chirino <hi...@coredevelopers.net>.
Ok.. thanks for the procedure to replicate.  I found the bug.  

Summary of the problem:
The server sometimes establishes a socket back to the client if all the
current sockets from the client are busy.  That part was a little
broke.  The client accepted the connection and received the reply
message but it did not associate the reply back to the original request.
The URI of the server that sent the reply did not match exactly to the
URI of the server we sent the request to ( async://localhost vs
async://127.0.0.1 type problem ).  

So now it's been fixed to that when the server connects back to the
client it reports the URI that the client originally used to connect to
the server.

Do me a favor and let me know if the fix I checked in fixes your issues.

Regards,
Hiram


On Sun, 2003-10-19 at 22:44, Aaron Mulder wrote:
> On Sun, 19 Oct 2003, Hiram Chirino wrote:
> > Can you point send me a script of the commands you are running that gets
> > this to fail?  I'm sure it's a problem somewhere in the async remoting
> > transport layer.  It's quite new and has not received that much testing
> > :(   Platform info would be good too.
> 
> 	I'm on Linux (Red Hat 9) on Intel with Sun's JDK 1.4.2.
> 
> 	I don't yet have a script to replicate this, but you can use 
> the following procedure:
> 
> 	Make a JAR with nothing except a META-INF/ejb-jar.xml DD (you can
> use the one at
> modules/core/src/test-data/xml/deployment/simple-ejb-jar.xml)
> 
> 	Start Geronimo (maven run:main)
> 
> 	In a different window, start the deployer on your JAR
> "target/geronimo-DEV/bin/deploy ejb.jar" (or whatever the JAR name is)
> 
> 	When prompted to enter a URL, enter
> "deployer:geronimo://localhost" (this is the first time it connects to the
> server and sometimes it hangs here)
> 
> 	If you get to the menu of numbered items, hit "6" (deploy or
> redeploy) then "2" (distribute).  This connects to the server and might
> hang.
> 
> 	Now hit "4" (redeploy) and then "a" (add module) and then "L" 
> (list all modules).  This connects to the server 5 times (one per module 
> type) and often hangs.
> 
> 	Select "1" (the only deployed module).  This connects to the 
> server and might hang.
> 
> 	Select "b" (back) then "b" (back again) and then type "y" (to
> redeploy).  This connects to the server and might hang.
> 
> 	Select "b" (back) then "8" (manage deployments) then "5" (view
> modules) then "L" (list all deployments).  This connects to the server 5
> times and might hang.
> 
> 	If it still hasn't hung, try hitting "L" over and over again until 
> it does.
> 
> 
> 	With that procedure, it just took me 3 tries to get to the last 
> step, and when I did, I hit "L" about 7 times before it hung.  Note that I 
> always get the message "DEBUG [ChannelPool] channel connecting to: 
> async://(hostname):(port)" on the *server* side every time it hangs, and 
> not when a request succeeds.  Once it has hung, the deployer disconnects 
> from the server so you need to exit or Ctrl-C and then restart it to try 
> again.
> 
> Thanks,
> 	Aaron
> 


Re: JMX Communication Problems

Posted by Aaron Mulder <am...@alumni.princeton.edu>.
On Sun, 19 Oct 2003, Hiram Chirino wrote:
> Can you point send me a script of the commands you are running that gets
> this to fail?  I'm sure it's a problem somewhere in the async remoting
> transport layer.  It's quite new and has not received that much testing
> :(   Platform info would be good too.

	I'm on Linux (Red Hat 9) on Intel with Sun's JDK 1.4.2.

	I don't yet have a script to replicate this, but you can use 
the following procedure:

	Make a JAR with nothing except a META-INF/ejb-jar.xml DD (you can
use the one at
modules/core/src/test-data/xml/deployment/simple-ejb-jar.xml)

	Start Geronimo (maven run:main)

	In a different window, start the deployer on your JAR
"target/geronimo-DEV/bin/deploy ejb.jar" (or whatever the JAR name is)

	When prompted to enter a URL, enter
"deployer:geronimo://localhost" (this is the first time it connects to the
server and sometimes it hangs here)

	If you get to the menu of numbered items, hit "6" (deploy or
redeploy) then "2" (distribute).  This connects to the server and might
hang.

	Now hit "4" (redeploy) and then "a" (add module) and then "L" 
(list all modules).  This connects to the server 5 times (one per module 
type) and often hangs.

	Select "1" (the only deployed module).  This connects to the 
server and might hang.

	Select "b" (back) then "b" (back again) and then type "y" (to
redeploy).  This connects to the server and might hang.

	Select "b" (back) then "8" (manage deployments) then "5" (view
modules) then "L" (list all deployments).  This connects to the server 5
times and might hang.

	If it still hasn't hung, try hitting "L" over and over again until 
it does.


	With that procedure, it just took me 3 tries to get to the last 
step, and when I did, I hit "L" about 7 times before it hung.  Note that I 
always get the message "DEBUG [ChannelPool] channel connecting to: 
async://(hostname):(port)" on the *server* side every time it hangs, and 
not when a request succeeds.  Once it has hung, the deployer disconnects 
from the server so you need to exit or Ctrl-C and then restart it to try 
again.

Thanks,
	Aaron


Re: JMX Communication Problems

Posted by Hiram Chirino <hi...@coredevelopers.net>.
Hi Aaron,

Can you point send me a script of the commands you are running that gets
this to fail?  I'm sure it's a problem somewhere in the async remoting
transport layer.  It's quite new and has not received that much testing
:(   Platform info would be good too.

Regards,
Hiram

On Sat, 2003-10-18 at 22:09, Aaron Mulder wrote:
> 	I've gotten the JSR-88 command-line client a little further, to 
> the point where I make 6 or 8 JMX calls when I'm working with it.  This 
> often fails with a timeout error, but not always.  Lately, when I start 
> the Geronimo server, the first time I fire up the client it fails, but if 
> I then restart it it works OK.
> 
> 	When I fire up the client and it fails, the server prints 
> something like this:
> 
>     [java] 13:40:09,793 DEBUG [ChannelPool] channel connecting to: 
> async://(hostname):35649
> 
> 	When the client works, the server doesn't print that.
> 
> 	When the client fails, it hangs for a while (30 seconds or 
> something, I'm not exactly sure), and then I get something like this:
> 
> org.apache.geronimo.remoting.transport.TransportException: Request time 
> out.
>         at 
> org.apache.geronimo.remoting.transport.async.ChannelPool.sendRequest(ChannelPool.java:459)
>         at 
> org.apache.geronimo.remoting.transport.async.AsyncClient.sendRequest(AsyncClient.java:93)
>         at 
> org.apache.geronimo.remoting.transport.RemoteTransportInterceptor.invoke(RemoteTransportInterceptor.java:97)
>         at 
> org.apache.geronimo.remoting.MarshalingInterceptor.invoke(MarshalingInterceptor.java:80)
>         at 
> org.apache.geronimo.proxy.SimpleRPCContainer.invoke(SimpleRPCContainer.java:84)
>         at 
> org.apache.geronimo.proxy.ProxyContainer.invoke(ProxyContainer.java:85)
>         at $Proxy0.invoke(Unknown Source)
>         at 
> org.apache.geronimo.enterprise.deploy.server.JmxServerConnection.getAvailableModules(JmxServerConnection.java:52)
> 
> 
> 	Note that all of this is with the client and server running on the 
> same machine, with a host name that resolves to 127.0.0.1.  For most of 
> the day I was not on the internet at all, but being online doesn't seem to 
> help.
> 
> Aaron
>