Connect IO Exception

java.rmi.ConnectIOException: Exception creating connection to: 10.14.1.1; nested exception is: java.io.InterruptedIOException: The socket pool for a client 10.14.1.1:3003 did not recieve a callback socket from the client within 60001ms, pool still empty

We often errors on Servoy server for connections via Headless Client from a office connected with our VPN WAN.

I tried to change the lower values timeout Server in this way:

Rmi.connection.timeout: 10 
ApplicationServer.pingDelay: 20

Without seeing improvements.

What can we do to avoid these errors?

What happens when you raise them even more to, let’s say, 60 seconds?
Just for the sake of the experiment I would play a little more with these setting to identify the issue…

Now offices are empty. Try and then refer you what is happened.

Thanks.

Giovanni, are you sure that this is an headless client? An headless client runs on the server so all RMI communication is done on localhost and only the resulting html is sent trough the VPN to the web browser, I would double check that log entry, I don’t think it’s related to the HC.

Ciao Nicola.

Giovanni, are you sure that this is an headless client?

Are absolutely sure. The error message is taken from the page “server logs” of Servoy Server.

We have some offices connected to the VPN with ping times from 12ms to 50ms and we continually messages like this. Among the offices there are two routers on the network MPLS (Telecom Italia). Servoy Server is located at headquarters.

2008-03-22 07:39
RMI TCP Connection(2)-10.11.2.8 
ERROR com.servoy.j2db.util.Debug destroyObject: java.sql.SQLException: Eccezione IO: Connection reset by peer: socket write error 

...

org.apache.commons.dbcp.DbcpException: java.sql.SQLException: Eccezione IO: Connection reset by peer: socket write error 
     at org.apache.commons.dbcp.PoolingConnection.makeObject(PoolingConnection.java:191) 
     at com.servoy.j2db.persistence.datasource.m.borrowObject(Unknown Source) 
     at org.apache.commons.dbcp.PoolingConnection.prepareStatement(PoolingConnection.java:128) 
     at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:188) 
     at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:188) 
     at com.servoy.j2db.dataprocessing.SQLEngine.a(Unknown Source) 
     at com.servoy.j2db.dataprocessing.SQLEngine.a(Unknown Source) 
     at com.servoy.j2db.dataprocessing.SQLEngine.performQuery(Unknown Source) 
     at sun.reflect.GeneratedMethodAccessor256.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) 
     at sun.rmi.transport.Transport$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at sun.rmi.transport.Transport.serviceCall(Unknown Source) 
     at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) 
     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) 
     at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 
    Caused by: java.sql.SQLException: Eccezione IO: Connection reset by peer: socket write error 
     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) 
     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) 
     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333) 
     at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:389) 
     at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413) 
     at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:119) 
     at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:92) 
     at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnection.java:950) 
     at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:802) 
     at com.servoy.j2db.persistence.datasource.l.prepareStatement(Unknown Source) 
     at org.apache.commons.dbcp.PoolingConnection.makeObject(PoolingConnection.java:185) 
     ... 20 more

I do not understand on what have caused.
It may be too slow connection? (HDSL lines 1Mbps)

PS: Sorry for my bad English… :oops:

Hi Giovanni,

That last piece of trace-log looks more of a JDBC connection issue between Servoy Server and your Oracle database server.
Is the database server also located at headquarters or is it further away ?
Or maybe Oracle has a limit on the amount of connections you may use and you have set the max connections to high in Servoy?
Just thinking out loud here.

That last piece of trace-log looks more of a JDBC connection issue between Servoy Server and your Oracle database server.

It is true, but the server is always on the headquarters so I do not understand the problem.

Or maybe Oracle has a limit on the amount of connections you may use and you have set the max connections to high in Servoy?

I do not think this is the problem. The error posted is verified with a single user connected to Servoy and Oracle servers.

But even 1 single user can make Servoy Server use as much database connections as it needs.
Do you see anything in the Oracle logs ?