Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 67375 invoked from network); 27 May 2010 18:11:12 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 27 May 2010 18:11:12 -0000 Received: (qmail 90683 invoked by uid 500); 27 May 2010 18:11:11 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 90666 invoked by uid 500); 27 May 2010 18:11:11 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 90659 invoked by uid 99); 27 May 2010 18:11:11 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 May 2010 18:11:11 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.22] (HELO thor.apache.org) (140.211.11.22) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 May 2010 18:11:09 +0000 Received: from thor (localhost [127.0.0.1]) by thor.apache.org (8.13.8+Sun/8.13.8) with ESMTP id o4RIAlpJ028056 for ; Thu, 27 May 2010 18:10:47 GMT Message-ID: <9552949.29601274983847622.JavaMail.jira@thor> Date: Thu, 27 May 2010 14:10:47 -0400 (EDT) From: "Kathey Marsden (JIRA)" To: derby-dev@db.apache.org Subject: [jira] Commented: (DERBY-4455) Prepared statement failure with CLOB: Stream has already been read and end-of-file reached and cannot be re-used. In-Reply-To: <527960134.1259589320629.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/DERBY-4455?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12872311#action_12872311 ] Kathey Marsden commented on DERBY-4455: --------------------------------------- Was this issue a regression? I am working with a user that is seeing something similar after upgrading to 10.5 from 10.3, but they don't have this fix yet. I am hoping giving them the patch will fix their problem as it sounds so similar, but don't actually see this marked as a regression from 10.3 > Prepared statement failure with CLOB: Stream has already been read and end-of-file reached and cannot be re-used. > ----------------------------------------------------------------------------------------------------------------- > > Key: DERBY-4455 > URL: https://issues.apache.org/jira/browse/DERBY-4455 > Project: Derby > Issue Type: Bug > Components: Network Server > Affects Versions: 10.5.3.0 > Environment: Mac OS X 10.6.2, Java 6, Bitronix JTA > Reporter: Brett Wooldridge > Assignee: Kristian Waagan > Fix For: 10.5.3.1, 10.6.1.0 > > Attachments: derby-4455-1a.diff, derby-4455-1b.diff, derby-4455-1c.diff, DerbyFailure.zip > > > Possibly related to #4332? > We have encountered an error when using Prepared Statements and CLOBs. I have read: > http://db.apache.org/derby/papers/JDBCImplementation.html#setAsciiStream%2CsetBinaryStream%2CsetCharacterStream > But it does not seem applicable, as we are not re-using a stream. > The environment is this: > 1. Java 6 > 2. Derby 10.5.3.0 > 3. Bitronix JTA 1.3.3 > We're actually using Hibernate, but I eliminated it from the equation (and the problem persists). > A summary of the failure flow is this: > 1. Start a transaction > 2. Obtain a connection from a pool of connections (for this test, the pool size is pinned at 1) > 3. Prepare a statement that inserts a CLOB. > 4. Set the parameters > 5. Add the prepared statement to a batch (but we only batch 1 -- this is to emulate what hibernate is doing as closely as possible). > 6. Execute the batch. > Everything up to this point works. > 7. Repeat steps 1-6. But this time, the connection will be reused from the pool, and the statement will be gotten from a prepared statement cache (maintained by bitronix). I.e. the prepared statement is re-used. > 8. Observe the following failure: > org.apache.derby.client.am.BatchUpdateException: Non-atomic batch failure. The batch was submitted, but at least one exception occurred on an individual member of the batch. Use getNextException() to retrieve the exceptions for specific batched elements. > at org.apache.derby.client.am.Agent.endBatchedReadChain(Unknown Source) > at org.apache.derby.client.am.PreparedStatement.executeBatchRequestX(Unknown Source) > at org.apache.derby.client.am.PreparedStatement.executeBatchX(Unknown Source) > at org.apache.derby.client.am.PreparedStatement.executeBatch(Unknown Source) > at bitronix.tm.resource.jdbc.JdbcPreparedStatementHandle.executeBatch(JdbcPreparedStatementHandle.java:248) > at org.dancernetworks.TestFailure.doInsert(TestFailure.java:134) > at org.dancernetworks.TestFailure.doPrepared(TestFailure.java:110) > at org.dancernetworks.TestFailure.main(TestFailure.java:55) > Nov 30, 2009 10:29:31 PM bitronix.tm.BitronixTransactionManager shutdown > INFO: shutting down Bitronix Transaction Manager > An IOException was thrown when reading a 'java.sql.String' from an InputStream. > java.sql.SQLException: An IOException was thrown when reading a 'java.sql.String' from an InputStream. > 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.seeNextException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedResultSet.noStateChangeException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.transferParameters(Unknown Source) > at org.apache.derby.jdbc.XAStatementControl.getRealPreparedStatement(Unknown Source) > at org.apache.derby.iapi.jdbc.BrokeredPreparedStatement.getPreparedStatement(Unknown Source) > at org.apache.derby.iapi.jdbc.BrokeredPreparedStatement.getStatement(Unknown Source) > at org.apache.derby.iapi.jdbc.BrokeredStatement.close(Unknown Source) > at org.apache.derby.impl.drda.DRDAStatement.close(Unknown Source) > at org.apache.derby.impl.drda.Database.close(Unknown Source) > at org.apache.derby.impl.drda.Session.close(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.closeSession(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source) > Caused by: java.sql.SQLException: An IOException was thrown when reading a 'java.sql.String' from an InputStream. > at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) > ... 15 more > Caused by: java.sql.SQLException: Java exception: 'Stream has already been read and end-of-file reached and cannot be re-used.: java.io.EOFException'. > at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) > 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.javaException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > ... 12 more > Caused by: java.io.EOFException: Stream has already been read and end-of-file reached and cannot be re-used. > at org.apache.derby.iapi.types.ReaderToUTF8Stream.read(Unknown Source) > at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:320) > at org.apache.derby.iapi.types.SQLChar.readExternal(Unknown Source) > at org.apache.derby.iapi.types.SQLChar.getString(Unknown Source) > at org.apache.derby.iapi.types.SQLChar.setFrom(Unknown Source) > at org.apache.derby.iapi.types.DataType.setValue(Unknown Source) > at org.apache.derby.impl.sql.GenericParameterValueSet.transferDataValues(Unknown Source) > at org.apache.derby.impl.sql.execute.BaseActivation.setParameters(Unknown Source) > at org.apache.derby.impl.sql.GenericActivationHolder.setParameters(Unknown Source) > ... 10 more > Attached is an archived Eclipse project of a self-contained reproduction. It includes everything needed to run, including the Bitronix 1.3.3 jar. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.