db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brett Mason (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DERBY-5351) SYSCS_UTIL.SYSCS_COMPRESS_TABLE causes concurrent transactions to fail
Date Mon, 25 Jul 2011 00:21:23 GMT
SYSCS_UTIL.SYSCS_COMPRESS_TABLE causes concurrent transactions to fail
----------------------------------------------------------------------

                 Key: DERBY-5351
                 URL: https://issues.apache.org/jira/browse/DERBY-5351
             Project: Derby
          Issue Type: Bug
    Affects Versions: 10.8.1.2, 10.6.2.1
         Environment: >sysinfo
------------------ Java Information ------------------
Java Version:    1.6.0_26
Java Vendor:     Sun Microsystems Inc.
Java home:       C:\Program Files (x86)\Java\jre6
Java classpath:  .;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip;C:\Users\BMASON\Sandbox\libs\db-derby-10.8.1.2-bin\bin\../lib/derby.jar;C:\Users\BMASON\Sandbox\libs\db-derby-10.8.1.2-bin\bin\../lib/derbynet.jar;C:\Users\BMASON\Sandbox\libs\db-derby-10.8.1.2-bin\bin\../lib/derbyclient.jar;C:\Users\BMASON\Sandbox\libs\db-derby-10.8.1.2-bin\bin\../lib/derbytools.jar
OS name:         Windows 7
OS architecture: x86
OS version:      6.1
Java user name:  bmason
Java user home:  C:\Users\BMASON
Java user dir:   C:\Users\BMASON\Sandbox\libs\db-derby-10.8.1.2-bin\bin
java.specification.name: Java Platform API Specification
java.specification.version: 1.6
java.runtime.version: 1.6.0_26-b03
--------- Derby Information --------
JRE - JDBC: Java SE 6 - JDBC 4.0
[C:\Users\BMASON\Sandbox\libs\db-derby-10.8.1.2-bin\lib\derby.jar] 10.8.1.2 - (1095077)
[C:\Users\BMASON\Sandbox\libs\db-derby-10.8.1.2-bin\lib\derbytools.jar] 10.8.1.2 - (1095077)
[C:\Users\BMASON\Sandbox\libs\db-derby-10.8.1.2-bin\lib\derbynet.jar] 10.8.1.2 - (1095077)
[C:\Users\BMASON\Sandbox\libs\db-derby-10.8.1.2-bin\lib\derbyclient.jar] 10.8.1.2 - (1095077)
------------------------------------------------------
----------------- Locale Information -----------------
Current Locale :  [English/New Zealand [en_NZ]]
Found support for locale: [cs]
         version: 10.8.1.2 - (1095077)
Found support for locale: [de_DE]
         version: 10.8.1.2 - (1095077)
Found support for locale: [es]
         version: 10.8.1.2 - (1095077)
Found support for locale: [fr]
         version: 10.8.1.2 - (1095077)
Found support for locale: [hu]
         version: 10.8.1.2 - (1095077)
Found support for locale: [it]
         version: 10.8.1.2 - (1095077)
Found support for locale: [ja_JP]
         version: 10.8.1.2 - (1095077)
Found support for locale: [ko_KR]
         version: 10.8.1.2 - (1095077)
Found support for locale: [pl]
         version: 10.8.1.2 - (1095077)
Found support for locale: [pt_BR]
         version: 10.8.1.2 - (1095077)
Found support for locale: [ru]
         version: 10.8.1.2 - (1095077)
Found support for locale: [zh_CN]
         version: 10.8.1.2 - (1095077)
Found support for locale: [zh_TW]
         version: 10.8.1.2 - (1095077)
------------------------------------------------------

            Reporter: Brett Mason


It appears that Derby simultaneous requests to a table which is being compressed with SYSCS_UTIL.SYSCS_COMPRESS_TABLE
will sometimes fail.

Our application is set to run a set of nightly maintenance tasks which include SYSCS_UTIL.SYSCS_COMPRESS_TABLE.
From our logs it appears that occasionally selects will fail while the database is being compressed
with the following error: "ERROR XSCH1: Container 1,408 not found." A full stack trace is
included below.

Attached is a standalone test case which will reproduce the problem within a couple of seconds.
It will create two threads, one which will repeatedly compress TABLE1 while the second thread
tries to read from the table. The documentation states that SYSCS_COMPRESS_TABLE will acquire
an exclusive lock on the table which suggests it any simultaneous requests should block until
the compress has completed.

A workaround is to switch to SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE which does not seem to
have the problem.

Sample output from test case
---------------------------------------
Thread-3: Selecting...
Thread-2: Compressing...
Thread-3: Selecting...
Thread-3: Selecting...
Thread-2: Compressing...
Thread-3: Selecting...
Thread-3: Selecting...
Thread-3: Selecting...
Thread-2: Compressing...
Thread-3: Selecting...
Thread-2: Compressing...
java.sql.SQLException: Container 2,480 not found.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.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.EmbedPreparedStatement.executeStatement(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown Source)
	at BashOnCompressTables$SelectRunnable.select(BashOnCompressTables.java:67)
	at BashOnCompressTables$SelectRunnable.run(BashOnCompressTables.java:48)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: Container 2,480 not found.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
Source)
	... 12 more
Caused by: ERROR XSCH1: Container 2,480 not found.
	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
	at org.apache.derby.impl.store.access.heap.Heap.openScan(Unknown Source)
	at org.apache.derby.impl.store.access.RAMTransaction.openScan(Unknown Source)
	at org.apache.derby.impl.store.access.RAMTransaction.openCompiledScan(Unknown Source)
	at org.apache.derby.impl.sql.execute.BulkTableScanResultSet.openScanController(Unknown Source)
	at org.apache.derby.impl.sql.execute.TableScanResultSet.openCore(Unknown Source)
	at org.apache.derby.impl.sql.execute.BulkTableScanResultSet.openCore(Unknown Source)
	at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source)
	at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
	... 6 more


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message