db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul taylor (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-5545) Exception ResultSet not open. Operation 'next' not permitted. Verify that autocommit is OFF exception occuring on rs.next() after long run.
Date Tue, 20 Dec 2011 19:04:30 GMT

    [ https://issues.apache.org/jira/browse/DERBY-5545?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13173429#comment-13173429

Paul taylor commented on DERBY-5545:

This is where the code goes wrong
            rs = Db.getInstance().runQuery("select * from song where fullfilename='" + Db.escapeChars(fullfilename)
+ '\'');
            if (rs.next())

Db.getInstance() returns a singleton of db class (it is already initilized)

runQuery method is:

public ResultSet runQuery(String resultsQuery) throws SQLException
        MainWindow.logger.finest("Executing query:"+resultsQuery);
            Connection c = createConnection();
            Statement s = c.createStatement();
            ResultSet rs = s.executeQuery(resultsQuery);
            return rs;
        catch (SQLException sqle)
            printSQLException(sqle, resultsQuery);
            throw sqle;

createConnection method is:

public Connection createConnection() throws SQLException
            Connection c=pooled.getConnection();
            return c;
        catch(SQLException e)
            printSQLException(e, null);
            throw e;

So you can see the connection isnt shared, but multiple threads do share the Db instance,
Im wondering if there is a thread safety issue in that class somehow, and there could be two
threads running the same method. 
> Exception ResultSet not open. Operation 'next' not permitted. Verify that autocommit
is OFF exception occuring on rs.next() after long run. 
> --------------------------------------------------------------------------------------------------------------------------------------------
>                 Key: DERBY-5545
>                 URL: https://issues.apache.org/jira/browse/DERBY-5545
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions:
>         Environment: OSX 10.6
>            Reporter: Paul taylor
> Im seeing this error occur after loading alot of data into the Database. I can confirm
that autocommit is set to off, and that it occurs on calling  rs.next() immediatlely after
running a query and assigning to  resultset rs. The cdoe is called many times (250,000) and
usually works, then suddenly it starts going wrong, I also using c3po database pooling. Im
wondering if the problem is linked to memory consumption although I have no OutOfMemoryError
> Java.sql.SQLException: ResultSet not open. Operation 'next' not permitted. Verify that
autocommit is OFF.
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.ConnectionChild.newSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedResultSet.checkIfClosed(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedResultSet.checkExecIfClosed(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source)
> 	at com.mchange.v2.c3p0.impl.NewProxyResultSet.next(NewProxyResultSet.java:2859)

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message