[infinispan-dev] simulating connection timeout

Michal Linhard mlinhard at redhat.com
Thu Jan 19 08:31:04 EST 2012


On 01/19/2012 02:27 PM, Michal Linhard wrote:
> I wanted to test my theory that the hot rod client connection timeout we
> added as part of
> https://issues.jboss.org/browse/ISPN-1565
> is being ignored
> (taking into account https://issues.jboss.org/browse/ISPN-1755)
> I configured both socket timeout and connect timeout for 2 min but in
> certain tests I'm getting connection timeuot after cca 20secs.
>
> m.
Also if this is true it has to do someting with JVM Socket 
implementation (I'm using oracle's jdk 1.6.0_29)
because the socket.connect(..) is called with correct number (again 
taking into account ISPN-1755)

m.

> On 01/19/2012 12:01 PM, Manik Surtani wrote:
>> What is this for?  Perhaps just mock up the client to use a mock socket?
>>
>> On 19 Jan 2012, at 12:57, Bela Ban wrote:
>>
>>> If this is done in Java code, you could use byteman to change the behavior.
>>>
>>> Intercepting and changing the data flow in the TCP/IP stack itself gets
>>> more tricky; you have to insert a packet filter and then drop/reorder
>>> packets. In Java, you might be able to use jnetpcap, which allows you to
>>> get access to the individual packets.
>>>
>>> Maybe iptables will also allow you to do this, but it's rather static.
>>>
>>> On 1/18/12 10:05 PM, Michal Linhard wrote:
>>>> Hi all,
>>>>
>>>> probably stupid question from the area of java server programming and
>>>> networking if anyone's interrested:
>>>> (otherwise sorry for spam)
>>>>
>>>> is there a simple way of creating a server in java that would always
>>>> give me connection timeout ? (not connection refused, nor socket timeout
>>>> during read)
>>>> is it even possible to control establishing tcp connection from java ?
>>>>
>>>> what layer does control this ?
>>>> it seems that once you bind a socket the connections are automatically
>>>> established.
>>>> probably on some JVM level ?
>>>> so when I get
>>>>
>>>> java.net.ConnectException: Connection timed out
>>>> 	at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
>>>> 	at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
>>>> 	at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100)
>>>> 	at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransport.<init>(TcpTransport.java:80)
>>>>
>>>>
>>>> this means that server JVM or OS networking layer or whatever was so
>>>> stressed that it didn't have time to respond with SYN,ACK flagged packet
>>>> to establish the connection ?
>>>>
>>>> m.
>>>>
>>>>
>>>> ----------- my test code:
>>>> public class EchoServer {
>>>>       public static void main(String[] args) {
>>>>          try {
>>>>             ServerSocketChannel serverChannel = ServerSocketChannel.open();
>>>>             InetSocketAddress isa = new InetSocketAddress("localhost", 9090);
>>>>             serverChannel.socket().bind(isa);
>>>>             Thread.sleep(20000);
>>>>          } catch (Exception e) {
>>>>             e.printStackTrace();
>>>>          }
>>>>
>>>>       }
>>>> }
>>>>
>>>> public class EchoClient {
>>>>       public static void main(String[] args) {
>>>>          long startTime = System.currentTimeMillis();
>>>>          try {
>>>>             SocketAddress serverAddress = new
>>>> InetSocketAddress("localhost", 9090);
>>>>             SocketChannel socketChannel = SocketChannel.open();
>>>>             Socket socket = socketChannel.socket();
>>>>             socket.connect(serverAddress, 5000);
>>>>             socket.setSoTimeout(5000);
>>>>             BufferedInputStream socketInputStream = new
>>>> BufferedInputStream(socket.getInputStream(), socket.getReceiveBufferSize());
>>>>             BufferedOutputStream socketOutputStream = new
>>>> BufferedOutputStream(socket.getOutputStream(), socket.getSendBufferSize());
>>>>             PrintWriter out = new PrintWriter(socketOutputStream);
>>>>             out.println("Hello");
>>>>             out.flush();
>>>>             BufferedReader in = new BufferedReader(new
>>>> InputStreamReader(socketInputStream));
>>>>             System.out.println(in.readLine());
>>>>          } catch (Exception e) {
>>>>             System.out.println("Exception occured after " +
>>>> (System.currentTimeMillis() - startTime) + " ms");
>>>>             e.printStackTrace();
>>>>          }
>>>>       }
>>>> }
>>>>
>>> -- 
>>> Bela Ban
>>> Lead JGroups (http://www.jgroups.org)
>>> JBoss / Red Hat
>>> _______________________________________________
>>> infinispan-dev mailing list
>>> infinispan-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>> --
>> Manik Surtani
>> manik at jboss.org
>> twitter.com/maniksurtani
>>
>> Lead, Infinispan
>> http://www.infinispan.org
>>
>>
>>
>>
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>


-- 
Michal Linhard
Quality Assurance Engineer
JBoss Enterprise Datagrid

Red Hat Czech s.r.o.
Purkynova 99 612 45 Brno, Czech Republic
phone: +420 532 294 320 ext. 62320
mobile: +420 728 626 363



More information about the infinispan-dev mailing list