5 messages in com.mysql.lists.javaRe: No operations allowed after conne...| From | Sent On | Attachments |
|---|---|---|
| Loren Siebert | 17 Oct 2003 14:33 | |
| James Norman | 17 Oct 2003 14:42 | |
| Loren Siebert | 17 Oct 2003 14:52 | |
| Nick Stuart | 29 Oct 2003 06:14 | |
| Loren Siebert | 29 Oct 2003 06:15 |
| Subject: | Re: No operations allowed after connection closed![]() |
|---|---|
| From: | Loren Siebert (lor...@siebert.org) |
| Date: | 10/29/2003 06:15:40 AM |
| List: | com.mysql.lists.java |
Thanks Nick. I do only close my connections once...I always follow this sort of structure: try { PreparedStatement prepStmt = con.prepareStatement(insertStatement); try { prepStmt.setString(1, foo); prepStmt.setInt(2, bar); prepStmt.executeUpdate(); } finally { prepStmt.close(); } } finally { con.close(); }
I have not been able to reproduce that stack trace in testing and I haven't seen it again in production, despite frequent mysqld restarts. Nothing has changed in my code or configurations to make it behave any differently, so I suppose it's just a matter of time before it happens again.
----- Original Message ----- From: "Nick Stuart" <ni...@newtsplace.com> To: <ja...@lists.mysql.com> Sent: Wednesday, October 29, 2003 6:14 AM Subject: Re: No operations allowed after connection closed
I had this problem as well, and the main problem was that I was closing the connection twice. Once in the try{} block and again in the finally{} block, where it should only be closed in the finally. My thought is that this shouldn't matter, but it does and it fixed my errors. I don't know if this will help you out as it is a different situation (restarting the DB) but its something to look for.
-Nick
Quoting Loren Siebert <lor...@siebert.org>:
Hi James, I am using DBCP (see the last line in my stack trace).
Perhaps something is wrong with the connection test? If I am calling close() on the connection in my "finally" clause, the connection isn't getting closed properly, so that when a subsequent thread asks the DriverManager for a connection, it returns this incorrectly closed connection, thinking that it's actually open and available. Just guessing here.
For what it's worth, the DB I'm connecting to is a mysql3.23 instance on FreeBSD4.8.
----- Original Message ----- From: "James Norman" <jnor...@taregon.com> To: "Loren Siebert" <lor...@siebert.org> Cc: <ja...@lists.mysql.com> Sent: Friday, October 17, 2003 2:43 PM Subject: Re: No operations allowed after connection closed
The connections are closed when you restart the database. You may want to use a database pool such as the DBCP from jakarta.apache.org. This will test the connection before returning it, creating and returning a new connection if the old one is not longer valid.
On Fri, 2003-10-17 at 15:33, Loren Siebert wrote:
I am trying to find out why my pool of connections starts throwing exceptions like this whenever my mysql4.0.x instance is restarted:
|java.sql.SQLException: No operations allowed after connection closed.||Connection was closed due to the following exception:||** BEGIN NESTED EXCEPTION ** ||java.sql.SQLException|MESSAGE: Communication link failure: java.io.IOException, underlying cause: Unexpected end of input stream||** BEGIN NESTED EXCEPTION ** ||java.io.IOException|MESSAGE: Unexpected end of input stream||STACKTRACE:||java.io.IOException: Unexpected end of input stream| at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1405)| at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1775)| at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1020)| at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1109)| at com.mysql.jdbc.Connection.execSQL(Connection.java:2030)| at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1750)|
at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1596)|
at
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(Delegating
PreparedStatement.java:207)| ...<snip>
I am running Sun's JRE1.4.2_01 on RH9.0, and just upgraded to ConnectorJ3.0.9 (with autoreconnect=true) in hopes that this was a
fix
for a
possible ConnectorJ bug that was alluded to here: http://www.raibledesigns.com/page/rd/20030826.
Here is how I wrap the JDBC code in my Java app: Connection con = DriverManager.getConnection(getDataSourceName()); try { PreparedStatement prepStmt = con.prepareStatement(insertStatement); try { prepStmt.setString(1, foo); prepStmt.setInt(2, bar); prepStmt.executeUpdate(); } finally { prepStmt.close(); } } finally { con.close(); }
Is this a ConnectorJ bug, or am I not cleaning things up properly in the event that a Connection is broken?
-Loren
-- MySQL Java Mailing List For list archives: http://lists.mysql.com/java To unsubscribe: http://lists.mysql.com/java?unsub=ni...@newtsplace.com
---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program.
-- MySQL Java Mailing List For list archives: http://lists.mysql.com/java To unsubscribe: http://lists.mysql.com/java?unsub=lor...@siebert.org




