You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Mike Matrigali (JIRA)" <ji...@apache.org> on 2014/09/25 00:31:34 UTC

[jira] [Commented] (DERBY-6692) Self-deadlock when inserting row with identity column in soft-upgraded database

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

Mike Matrigali commented on DERBY-6692:
---------------------------------------

adding label to stop backport to 10.10.  The problem was a regression added into 10.11 and did not affect 10.10 and previous releases.

> Self-deadlock when inserting row with identity column in soft-upgraded database
> -------------------------------------------------------------------------------
>
>                 Key: DERBY-6692
>                 URL: https://issues.apache.org/jira/browse/DERBY-6692
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.11.1.1
>            Reporter: Knut Anders Hatlen
>            Assignee: Rick Hillegas
>              Labels: derby_backport_reject_10_10
>             Fix For: 10.11.1.1, 10.12.0.0
>
>         Attachments: derby-6692-01-aa-handleSelfDeadlock.diff, derby-6692-01-ab-withTests.diff
>
>
> Create a database called "wombat" with Derby 10.10.2.0.
> Then, in the same directory, execute the following code using the 10.11.1.0 release candidate:
> {code}
>         Connection c = DriverManager.getConnection("jdbc:derby:wombat");
>         c.setAutoCommit(false);
>         Statement s = c.createStatement();
>         s.execute("create table t(i int generated always as identity)");
>         s.execute("insert into t values (default)");
>         c.rollback();
> {code}
> The INSERT statement will fail with a self-deadlock:
> {noformat}
> Exception in thread "main" java.sql.SQLTransactionRollbackException: Self-deadlock.
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at Kladd.main(Kladd.java:12)
> Caused by: ERROR 40XL2: Self-deadlock.
> 	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> 	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> 	at org.apache.derby.impl.services.locks.ConcurrentLockSet.lockObject(Unknown Source)
> 	at org.apache.derby.impl.services.locks.AbstractPool.lockObject(Unknown Source)
> 	at org.apache.derby.impl.services.locks.ConcurrentPool.lockObject(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.RowLocking3.lockRecordForWrite(Unknown Source)
> 	at org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.lockPositionForWrite(Unknown Source)
> 	at org.apache.derby.impl.store.access.conglomerate.GenericConglomerateController.fetch(Unknown Source)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSetAutoincrementValue(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.getOldStyleIdentityValue(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.getSetAutoincrementValue(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.BaseActivation.getSetAutoincrementValue(Unknown Source)
> 	at org.apache.derby.exe.acaaeec04ex0147xab31x1ccax000007dedc900.e0(Unknown Source)
> 	at org.apache.derby.impl.services.reflect.DirectCall.invoke(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.RowResultSet.getNextRowCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.getNextRowCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> 	... 4 more
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)