This content has been marked as final.
Show 9 replies
-
1. Re: Socket Invoker timeout
ron_sigal Jan 2, 2009 11:19 PM (in response to mohitanchlia)mohitanchlia" wrote:
What does timeout 5000 mean?
On the server side, an "active" worker thread (one not in the thread pool waiting to get reused) waits in a socket read() for the next invocation. It will time out after 5 seconds and the worker thread will return itself to the thread pool.
On the client side, the invoker enters read() to get the answer to an invocation. It will time out after 5 seconds, close the connection, and throw an exception.
The call to java.net.Socket.connect(SocketAddress endpoint), which is the overloaded version of connect() used in org.jboss.remoting.transport.socket.MicroSocketClientInvoker, does not time out. -
2. Re: Socket Invoker timeout
mohitanchlia Jan 3, 2009 12:31 AM (in response to mohitanchlia)The call to java.net.Socket.connect(SocketAddress endpoint), which is the overloaded version of connect() used in org.jboss.remoting.transport.socket.MicroSocketClientInvoker, does not time out.
I didn't understand the above "does not timeout". With what you described then I shouldn't be seeing this:
2008-12-31 17:20:14,297 DEBUG [transport.socket.MicroSocketClientInvoker:ajp-0.0.0.0-8009-99] - SocketClientInvoker[18b118, socket://10.10.8.77:3873] got Exception java.net.NoRouteToHostException: No route to host, creation attempt took 5001 ms
--
5001 ms corresponds to 5 sec timeout set by me. Why would MicroSocketClientInvoker timeout when 5 sec timeout is really set for "read" requests made by client invoker to server invoker? -
3. Re: Socket Invoker timeout
ron_sigal Jan 3, 2009 5:05 AM (in response to mohitanchlia)"mohitanchlia" wrote:
The call to java.net.Socket.connect(SocketAddress endpoint), which is the overloaded version of connect() used in org.jboss.remoting.transport.socket.MicroSocketClientInvoker, does not time out.
I didn't understand the above "does not timeout". With what you described then I shouldn't be seeing this:
2008-12-31 17:20:14,297 DEBUG [transport.socket.MicroSocketClientInvoker:ajp-0.0.0.0-8009-99] - SocketClientInvoker[18b118, socket://10.10.8.77:3873] got Exception java.net.NoRouteToHostException: No route to host, creation attempt took 5001 ms
The java.net.NoRouteToHostException doesn't represent a timeout. The "creation attempt took 5001 ms" message is just extra information provided by the invoker. -
4. Re: Socket Invoker timeout
mohitanchlia Jan 3, 2009 2:20 PM (in response to mohitanchlia)
The java.net.NoRouteToHostException doesn't represent a timeout. The "creation attempt took 5001 ms" message is just extra information provided by the invoker.
So does it really mean that timeout is on initial Socket connection creation and not on the read operation? -
5. Re: Socket Invoker timeout
ron_sigal Jan 4, 2009 2:10 AM (in response to mohitanchlia)"mohitanchlia" wrote:
The java.net.NoRouteToHostException doesn't represent a timeout. The "creation attempt took 5001 ms" message is just extra information provided by the invoker.
So does it really mean that timeout is on initial Socket connection creation and not on the read operation?
Well,
1. The timeout is configured for the read() operation, not the connect() operation.
2. The java.net.NoRouteToHostException is being thrown from the connect() operation. -
6. Re: Socket Invoker timeout
mohitanchlia Jan 4, 2009 2:20 AM (in response to mohitanchlia)Reason I have been asking same question is because below timeout corresponds to the timeout I have set in timeout attribute. If that timeout was for read operation then why would NoRouteToHostException return in the timeout that I have specified. As you mentioned NoRouteToHostException occurs during connect. Everytime NoRouteToHostException occurs it returns in the timeout I specify. So If I change my timeout to 4000 ms then I see that too.
The java.net.NoRouteToHostException doesn't represent a timeout. The "creation attempt took 5001 ms" message is just extra information provided by the invoker. -
7. Re: Socket Invoker timeout
ron_sigal Jan 4, 2009 2:48 AM (in response to mohitanchlia)"mohitanchlia" wrote:
Reason I have been asking same question is because below timeout corresponds to the timeout I have set in timeout attribute.
My mistake, again. org.jboss.remoting.transport.socket.SocketClientInvoker.createSocket() overrides MicroSocketClientInvoker.createSocket(), and the former uses the configured timeout for the Socket.connect() call. You're right! -
8. Re: Socket Invoker timeout
mohitanchlia Jan 4, 2009 3:04 AM (in response to mohitanchlia)org.jboss.remoting.transport.socket.SocketClientInvoker.createSocket() overrides MicroSocketClientInvoker.createSocket(), and the former uses the configured timeout for the Socket.connect() call
Just so I am clear, same timeout is used for both connect and read operation. So it means if I specify 5 sec that will in fact set same timeout for how long it takes to connect and also how long it takes for the client invoker to get the response from server invoker? -
9. Re: Socket Invoker timeout
ron_sigal Jan 5, 2009 6:52 PM (in response to mohitanchlia)"mohitanchlia" wrote:
Just so I am clear, same timeout is used for both connect and read operation. So it means if I specify 5 sec that will in fact set same timeout for how long it takes to connect and also how long it takes for the client invoker to get the response from server invoker?
That's correct.