db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kathey Marsden <kmarsdende...@sbcglobal.net>
Subject Question about maildjbc test
Date Fri, 17 Jul 2009 05:28:58 GMT

I am running the 10.5 maildbc test on Linux with network server and the 
release candidate and an updated derbyTesting.jar to have just  Lily's 
change to change the backup user:  I see in the test output early and 
often, this error inserting data into the table:


SQLState:   XJ215
Severity: 20000
Message:  You cannot invoke other java.sql.Clob/java.sql.Blob methods 
after calling the free() method or afte
Clob's transaction has been committed or rolled back.
java.sql.SQLException: You cannot invoke other 
java.sql.Clob/java.sql.Blob methods after calling the free() m
ter the Blob/Clob's transaction has been committed or rolled back.
        at 
org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown 
Source)
        at 
org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
        at org.apache.derby.client.am.Lob.checkValidity(Unknown Source)
        at org.apache.derby.client.am.Clob.length(Unknown Source)
        at 
org.apache.derby.client.net.NetStatementRequest.computeProtocolTypesAndLengths(Unknown 
Source)
        at 
org.apache.derby.client.net.NetStatementRequest.buildSQLDTAcommandData(Unknown 
Source)
        at 
org.apache.derby.client.net.NetStatementRequest.writeExecute(Unknown Source)
        at 
org.apache.derby.client.net.NetPreparedStatement.writeExecute_(Unknown 
Source)
        at 
org.apache.derby.client.am.PreparedStatement.writeExecute(Unknown Source)
        at 
org.apache.derby.client.am.PreparedStatement.flowExecute(Unknown Source)
        at 
org.apache.derby.client.am.PreparedStatement.executeUpdateX(Unknown Source)
        at 
org.apache.derby.client.am.PreparedStatement.executeUpdate(Unknown Source)
        at 
org.apache.derbyTesting.system.mailjdbc.utils.DbTasks.insertMail(DbTasks.java:447)
        at 
org.apache.derbyTesting.system.mailjdbc.tasks.Refresh.insertMail(Refresh.java:99)
        at 
org.apache.derbyTesting.system.mailjdbc.tasks.Refresh.doWork(Refresh.java:75)
        at 
org.apache.derbyTesting.system.mailjdbc.tasks.Refresh.run(Refresh.java:51)
Caused by: org.apache.derby.client.am.SqlException: You cannot invoke 
other java.sql.Clob/java.sql.Blob metho
lling the free() method or after the Blob/Clob's transaction has been 
committed or rolled back.

The interesting thing is that the test itself is not using any Clob 
methods it uses setCharacterStream and also autocommit is off.
Below is a code excerpt and
        conn.setAutoCommit(false);
            PreparedStatement insertFirst = conn.prepareStatement(
                    Statements.insertStr, Statement.RETURN_GENERATED_KEYS);
            String name = new String("ABCD");
            String l_name = new String("WXYZ");
            long s_insert = System.currentTimeMillis();
            for (int i = 0; i < num; i++) {
                String new_name = new String(increment(name, 60));
                String new_lname = new String(decrement(l_name, 60));
                insertFirst.setString(1, new_name);
                insertFirst.setString(2, new_lname);
                insertFirst.setTimestamp(3, new Timestamp(System
                        .currentTimeMillis()));
                name = new_name;
                l_name = new_lname;
                try {
                    // to create a stream of random length between 200 
bytes and 3MB
                    int clobLength = Rn.nextInt(3078000 - 200 + 1) + 200;
                    streamReader = new LoopingAlphabetReader(clobLength,
                            CharAlphabet.modernLatinLowercase());
                    insertFirst.setCharacterStream(4, streamReader, 
clobLength);
                } catch (Exception e) {
                    MailJdbc.logAct.logMsg(LogFile.ERROR + thread_name + 
" : "
                            + "File not found Exception : " + 
e.getMessage());
                    errorPrint(e);
                    throw e;
                }
                int rand_num = Rn.nextInt(10 - 1);
                if (i == rand_num) {
                    ResultSet rs = stmt
                            .executeQuery("select count(*) from 
REFRESH.INBOX where attach_id>0");
                    while (rs.next()) {
                        id_count = rs.getInt(1);
                        insertFirst.setInt(5, rs.getInt(1) + 1);
                    }

                    rs.close();
                    
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
                } else
                    insertFirst.setInt(5, 0);
                insertFirst
                        .setString(
                                6,
                                "This column is used only to by pass the 
space problem. If the problem still exists, then we are going to "
                                        + "have a serious issue 
here.*****************************************************************************************************");
                int result = insertFirst.executeUpdate();


if I connect with ij I do see some rows in the INBOX, so some inserts do 
seem to be happening.  Does this look familiar to anyone?


Thanks

Kathey


Mime
View raw message