db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sai Pullabhotla (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-4275) Query executions fail when compressing a table using SYSCS_UTIL.SYSCS_COMPRESS_ TABLE
Date Tue, 16 Jun 2009 13:55:08 GMT

     [ https://issues.apache.org/jira/browse/DERBY-4275?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Sai Pullabhotla updated DERBY-4275:
-----------------------------------

    Attachment: CompressDBTest2.java
                CompressDBTest1.java

The attached files can be used to reproduce this reported bug. 

CompressDBTest1.java - tries to read a table while it is being compressed. The select statement
errors out with the following error:
java.sql.SQLException: Container 2,192 not found.
Subsequent SELECTs with a brand new connection also fail with a little bit different error:
The conglomerate (2,192) requested does not exist.

CompressDBTest2.java - tries to insert data into a table while it is being compressed. The
insert errors out eventually with the following error:
A lock could not be obtained due to a deadlock, cycle of locks and waiters is:
Lock : TABLE, TEST, Tablelock
  Waiting XID : {236439, IX} , APP, insert into test values(?, ?, ?, ?, ?)
  Granted XID : {234342, X}
Lock : ROW, SYSCONGLOMERATES, (5,14)
  Waiting XID : {234342, X} , APP, alter table "APP"."TEST" compress sequential
  Granted XID : {234342, S} , {236439, S}
. The selected victim is XID : 236439.

What the test classes do:

Both classes first create a database named test under the current working directory if a directory
named test does not already exist. Then a table named test is created and populated with 100,000
random records. Two threads are started then with the first one repeatedly compressing the
test table and the second one repeatedly executing a DML statement. If the DML statement errors
out, the compression thread will be stopped. Finally the database is shutdown. The standard
output of the program goes to stdout.log and standard error goes to stderr.log in the current
working directory.

> Query executions fail when compressing a table using SYSCS_UTIL.SYSCS_COMPRESS_ TABLE
> -------------------------------------------------------------------------------------
>
>                 Key: DERBY-4275
>                 URL: https://issues.apache.org/jira/browse/DERBY-4275
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.4.1.3
>            Reporter: Sai Pullabhotla
>         Attachments: CompressDBTest1.java, CompressDBTest2.java
>
>
> Query executions (SELECT and/or UPDATE) fail with serious exceptions while the table
is being compressed using SYSCS_UTIL.SYSCS_COMPRESS_ TABLE. The compression eventually finishes
normally, but the queries keep failing with the same error until the database is rebooted.
More information about this can be found on the Derby mailing list at http://www.nabble.com/Issue-with-SYSCS_UTIL.SYSCS_COMPRESS_-TABLE-td23892893.html.
The exception stacktrace is below: 
> Caused by: java.sql.SQLException: The conglomerate (71,409) requested does not exist.
>             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.EmbedPreparedStatement.executeStatement(Unknown
Source)
>             at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown
Source)
>             at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
>             ... 25 more
>         Caused by: ERROR XSAI2: The conglomerate (71,409) requested does not exist.
>             at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
>             at org.apache.derby.impl.store.access.btree.index.B2IFactory.readConglomerate(Unknown
Source)
>             at org.apache.derby.impl.store.access.RAMAccessManager.conglomCacheFind(Unknown
Source)
>             at org.apache.derby.impl.store.access.RAMTransaction.findExistingConglomerate(Unknown
Source)
>             at org.apache.derby.impl.store.access.RAMTransaction.openScan(Unknown Source)
>             at org.apache.derby.impl.store.access.BackingStoreHashTableFromScan.<init>(Unknown
Source)
>             at org.apache.derby.impl.store.access.RAMTransaction.createBackingStoreHashtableFromScan(Unknown
Source)
>             at org.apache.derby.impl.sql.execute.HashScanResultSet.openCore(Unknown Source)
>             at org.apache.derby.impl.sql.execute.JoinResultSet.openRight(Unknown Source)
>             at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source)
>             at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source)
>             at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown
Source)
>             at org.apache.derby.impl.sql.execute.UnionResultSet.getNextRowCore(Unknown
Source)
>             at org.apache.derby.impl.sql.execute.SortResultSet.getRowFromResultSet(Unknown
Source)
>             at org.apache.derby.impl.sql.execute.SortResultSet.getNextRowFromRS(Unknown
Source)
>             at org.apache.derby.impl.sql.execute.SortResultSet.loadSorter(Unknown Source)
>             at org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown Source)
>             at org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown Source)
>             at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown
Source)
>             at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message