Got this exception while two threads were rapidly querying a single database:

Caused by: SQL Exception: ResultSet not open. Operation 'next' not permitted. Verify that autocommit is OFF.
   at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:195)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:381) at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346) at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:1296) at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:88) at org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(EmbedResultSet.java:3715) at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:385) at org.apache.derby.impl.jdbc.EmbedResultSet.next(EmbedResultSet.java:299)
   ...

The code we called it from was checking for existence of a row, like this:

   PreparedStatement ps = conn.prepareStatement("SELECT ...");
   ps.setLong(1, id);
   ResultSet rs = ps.executeQuery;
   try
   {
       return rs.next();    <-- This line did it.
   }
   finally
   {
       rs.close();
   }

Autocommit is indeed off, but regardless of that, we're not actually updating this database at any point in time, just reading data out of it to put it in another.

Daniel

--
Daniel Noll

NUIX Pty Ltd
Level 8, 143 York Street, Sydney 2000
Phone: (02) 9283 9010
Fax:   (02) 9283 9020

This message is intended only for the named recipient. If you are not
the intended recipient you are notified that disclosing, copying,
distributing or taking any action in reliance on the contents of this
message or attachment is strictly prohibited.

Reply via email to