|
From: <no...@so...> - 2001-11-13 04:01:40
|
Bugs item #213428, was opened at 2000-09-02 06:58 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109028&aid=213428&group_id=9028 Category: InterClient >Group: Initial Bug Status: Open Resolution: None Priority: 5 Submitted By: Mark ODonohue (skywalker) Assigned to: Nobody/Anonymous (nobody) Summary: timeout in ib doesn't notify interclient Initial Comment: After a connection has been idle for a certain amount of time Interbase disconnects without InterClient being notified. This causes an exception the next time any kind of remote operation is performed, and makes the Connection worthless ( for obvious reasons ). I think would should implement a 'reconnect' parameter in the Connections parameters to specify whether or not we want it to automatically reconnect if a dead connection is detected. This is already being done in MySQL's JDBC driver. Since JDBC doesn't have a detection method to check the validity of the connection, this is the only option I see as pheasible. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2001-03-07 06:33 Message: Logged In: NO I would like to add my 2c to put this bug at the top of the list to be fixed. I access Interbase via Interclient, where both the client and the database are running on the same Linux server. ALL Interbase SS builds and ALL Firebird SS builds will silently kill/timeout interclient connections after a certain period of time, causing havok with the interbase client. After going nuts testing this (I could reproduce it on different machines, different versions of linux, even on setups with ZERO load) and reporting it on multiple mailing lists to no avail, I discovered that the Classic Server builds do not have this problem. I'm using Classic server right nows- SS is useless with dropped connections problem! Please take this bug seriously. -DM ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2001-03-07 06:31 Message: Logged In: NO I would like to add my 2c to put this bug at the top of the list to be fixed. I access Interbase via Interclient, where both the client and the database are running on the same Linux server. ALL Interbase SS builds and ALL Firebird SS builds will silently kill/timeout interclient connections after a certain period of time, causing havok with the interbase client. After going nuts testing this (I could reproduce it on different machines, different versions of linux, even on setups with ZERO load) and reporting it on multiple mailing lists to no avail, I discovered that the Classic Server builds do not have this problem. I'm using Classic server right nows- SS is useless with dropped connections problem! Please take this bug seriously. -DM ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2001-03-01 02:45 Message: Logged In: NO We have tested every aspect of our connection handling and aggree with other posts that the problem must lie with interbase. This problem is still present to day (1.march 2001) and is defininitly on Linux primeraly. This needs to be fixed asap! or the Linux version will be considered unstable and unworthy a second look. ---------------------------------------------------------------------- Comment By: (webnative) Date: 2000-10-20 13:29 Message: Interbase SuperServer closes InterServer connection after an hour of no activity; thus causing any new InterClient request to fail. The problem is found only in the following version: Interbase SS 6.0.1 Linux version only InterClient 1.6 Linux version only ---------------------------------------------------------------------- Comment By: Edward Flick (directrix1) Date: 2000-09-22 07:28 Message: I think the problem is with either Linux gds libs or Interbase there is no way to tell this without someone looking into the InterBase source. ---------------------------------------------------------------------- Comment By: Torsten Welches (torstenwel) Date: 2000-09-12 22:17 Message: ftp://ftp.easysoft.com/pub/beta/interbase/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2000-09-12 16:31 Message: where can I get a copy of an ODBC driver for linux? ---------------------------------------------------------------------- Comment By: Torsten Welches (torstenwel) Date: 2000-09-11 22:17 Message: Of cause I didn't recommend the JDBC-ODBC bridge for a production setup. In any case it should be good enough to test it against the disconnect problem and verify if it's a problem with Linux InterBase rather than InterServer. Torsten ---------------------------------------------------------------------- Comment By: Torsten Welches (torstenwel) Date: 2000-09-11 22:16 Message: Of cause I didn't recommend the JDBC-ODBC bridge for a production setup. In any case it should be good enough to test it against the disconnect problem and verify if it's a problem with Linux InterBase rather than InterServer. Torsten ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2000-09-11 10:29 Message: I'd rather stick to straight JDBC ---------------------------------------------------------------------- Comment By: Torsten Welches (torstenwel) Date: 2000-09-10 22:52 Message: You could try the JDBC-ODBC bridge using one of the available ODBC drivers, no? Torsten ---------------------------------------------------------------------- Comment By: Edward Flick (directrix1) Date: 2000-09-08 06:29 Message: Do you know of any other JDBC driver for InterBase? Edward Flick ---------------------------------------------------------------------- Comment By: Torsten Welches (torstenwel) Date: 2000-09-08 04:17 Message: If that's possible you could try to use a non-InterClient/InterServer connection, i.e. another JDBC driver. If the problem persists then you know that it is a problem with Linux InterBase rather than InterServer. (or am I missing something?) Torsten ---------------------------------------------------------------------- Comment By: Edward Flick (directrix1) Date: 2000-09-07 06:38 Message: Well, I ran another test. This time I made my Enhydra app use my NT boxes InterServer by proxy. When I do this the connection stays open. Therefore, it is most definetly a problem with either: * Linux Interbase gds libs or * Linux InterServer InterClient is ruled out because its still using the linux box's version, and InterBase itself is ruled out, because it stays connected. Here is the connection string I put into my enhydra app on the linux box (CDF) to proxy through my NT box (Directrix1): jdbc:interbase://Directrix1/cdf:/dbs/tracking.gdb ---------------------------------------------------------------------- Comment By: Edward Flick (directrix1) Date: 2000-09-06 12:33 Message: I believe the problem may actually be with the linux version of interbase/firebird's gds library. Here is what I get when I run netstat before, the error occurs: Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 124 0 localhost:1164 localhost:gds_db ESTABLISHED tcp 0 0 localhost:interserver localhost:1163 ESTABLISHED tcp 0 0 localhost:1163 localhost:interserver ESTABLISHED Notice that it shows a connection from InterServer to Interbase, but not from InterBase to InterServer. This shows that InterBase has terminated its connection with InterServer. Just an observation. Edward Flick ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2000-09-06 10:49 Message: Here is the output of your program on my linux box: connection was idle for 2048 seconds connection was idle for 4096 seconds sql exception: [interclient][interbase] Unable to complete network request to host "localhost". Error reading data from the connection. Connection reset by peer It didn't print out a stack trace, but here is a stack trace from my Enhydra applet which is suffering from this same timeout problem: - Error in .InLabTracking - Reason: class interbase.interclient.SQLException: [interclient][interbase] Unable to complete network request to host "localhost". Error reading data from the connection. Connection reset by peer Java Call Stack: interbase.interclient.SQLException: [interclient][interbase] Unable to complete network request to host "localhost". Error reading data from the connection. Connection reset by peer at interbase.interclient.RecvMessage.createSQLException(Unknown Source) at interbase.interclient.RecvMessage.makeSQLException(Unknown Source) at interbase.interclient.RecvMessage.get_EXCEPTIONS(Unknown Source) at interbase.interclient.Statement.remote_EXECUTE_QUERY_STATEMENT(Unknown Source) at interbase.interclient.Statement.executeQuery(Unknown Source) at com.lutris.appserver.server.sql.standard.StandardDBConnection.executeQuery(StandardDBConnection.java, Compiled Code) at inLabTracking.presentation.SeniorShippingLog.runConnected(SeniorShippingLog.java, Compiled Code) at inLabTracking.presentation.ConnectedPO.runAuthenticated(ConnectedPO.java, Compiled Code) at inLabTracking.presentation.AuthenticatedPO.run(AuthenticatedPO.java, Compiled Code) at com.lutris.appserver.server.httpPresentation.HttpPresentationManager.runPresentationObj(HttpPresentationManager.java, Compiled Code) at com.lutris.appserver.server.httpPresentation.HttpPresentationManager.Run(HttpPresentationManager.java, Compiled Code) at com.lutris.appserver.server.httpPresentation.servlet.HttpPresentationServlet.serviceDirect(HttpPresentationServlet.java, Compiled Code) at com.lutris.appserver.server.httpPresentation.servlet.HttpPresentationServlet.service(HttpPresentationServlet.java, Compiled Code) at javax.servlet.http.HttpServlet.service(HttpServlet.java, Compiled Code) at org.apache.tomcat.core.ServiceInvocationHandler.method(ServletWrapper.java, Compiled Code) at org.apache.tomcat.core.ServletWrapper.handleInvocation(ServletWrapper.java, Compiled Code) at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java, Compiled Code) at org.apache.tomcat.core.Context.handleRequest(Context.java, Compiled Code) at org.enhydra.servlet.servletManager.ServletManager.service(ServletManager.java, Compiled Code) at org.enhydra.servlet.connectionMethods.http.HttpHandler.doARequest(HttpHandler.java, Compiled Code) at org.enhydra.servlet.connectionMethods.http.HttpHandler.processRequests(HttpHandler.java, Compiled Code) at org.enhydra.servlet.connectionMethods.http.HttpHandler.run(HttpHandler.java, Compiled Code) at java.lang.Thread.run(Thread.java, Compiled Code) I can't tell if thats InterClient throwing the Exception or InterServer. Both of them are on the same Linux box. Edward Flick ---------------------------------------------------------------------- Comment By: Torsten Welches (torstenwel) Date: 2000-09-06 04:08 Message: I don't have a (working) Linux box here, but I asked Mark O'Donohue to try it. He is out of town for some days and will do it as soon as he is back. Could you post the exception stack trace of the disconnect error? Thanks, Torsten ---------------------------------------------------------------------- Comment By: Edward Flick (directrix1) Date: 2000-09-04 14:38 Message: I ran your little program, and it showed a disconnect after the 4096 second marker, which coincides with my exact disconnect time of 64 minutes. I only have access to this linux box, so you might need to try to run it on one around where you are. ---------------------------------------------------------------------- Comment By: Edward Flick (directrix1) Date: 2000-09-04 07:56 Message: Well, I'm running InterClient/InterServer/Interbase on one Linux machine. If you could run your test on a Linux box ( if you have one ) I would appreciate it. Edward ---------------------------------------------------------------------- Comment By: Torsten Welches (torstenwel) Date: 2000-09-04 00:23 Message: I tried to reproduce the disconnects - no luck. I was able to have an idle connection for long periods of time (more than 9 hours) without getting disconnected. Here's what I did: static public void main (String args[]) { interbase.interclient.DataSource dataSource = new interbase.interclient.DataSource(); dataSource.setDatabaseName("c:/program files/Borland/InterBase/examples/database/employee.gdb"); java.sql.Connection c = null; try { c = dataSource.getConnection("sysdba","masterkey"); } catch (java.sql.SQLException connectionFailure) { System.out.println("connection failed: " + connectionFailure); return; } int timeout = 1000; //let's start with one second while (true) { //forever until we hit an exception or kill the vm //first let's wait... try { Thread.sleep(timeout); System.out.println("connection was idle for " + timeout/1000 + " seconds"); } catch (Exception uhoh) { System.out.println("failed to wait?!: " + uhoh); return; } timeout *= 2; //next time we try it double the time; try { java.sql.Statement stmt = null; java.sql.ResultSet results = null; try {//do a dummy db access stmt = c.createStatement(); results = stmt.executeQuery("Select count(*) from JOB"); results.next(); } finally { if (results != null) results.close(); if (stmt != null) stmt.close(); } } catch (java.sql.SQLException e) { System.out.println("sql exception: " + e.getMessage()); if (c != null) { try { c.close(); } catch (java.sql.SQLException ignore) {} } return; } } } After "connection was idle for 32768 seconds" I gave up... Maybe it's platform dependant? I'm under NT, which OS do you use? Regards, Torsten ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109028&aid=213428&group_id=9028 |