db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Juha Heljoranta (JIRA)" <j...@apache.org>
Subject [jira] Created: (DERBY-3683) SYSCS_COMPRESS_TABLE fails to aquire exclusive table lock
Date Wed, 21 May 2008 10:11:55 GMT
SYSCS_COMPRESS_TABLE fails to aquire exclusive table lock

                 Key: DERBY-3683
                 URL: https://issues.apache.org/jira/browse/DERBY-3683
             Project: Derby
          Issue Type: Bug
    Affects Versions:
         Environment: Embedded Derby, Sun JDK 1.6.0_06-b02, Linux 2.6.9-67.0.15.EL i686
            Reporter: Juha Heljoranta
            Priority: Minor

Derby documentation about SYSCS_COMPRESS_TABLE says: "...procedure acquires an exclusive table
lock on the table being compressed." However, I get:

java.sql.SQLException: The exception 'java.sql.SQLException: A lock could not be obtained
due to a deadlock, cycle of locks and waiters is:
  Waiting XID : {13091, X} , APP, alter table "APP"."XYZ" compress sequential
  Granted XID : {13091, S} , {13087, S} 
Lock : TABLE, XYZ, Tablelock
  Waiting XID : {13087, IX} , APP, update XYZ set FOO = ? where BAR = ? AND ID = ?
  Granted XID : {13091, X} 
. The selected victim is XID : 13091.' was thrown while evaluating an expression.

if another thread is updating the same table while another thread executes:

CallableStatement cs = conn.prepareCall("CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE(?, ?, ?)");
cs.setString(1, "APP");
cs.setString(2, "XYZ");
cs.setShort(3, (short) 1);

Problem goes away if I acquire exclusive table lock manually right before the compress table

conn.prepareStatement("LOCK TABLE XYZ IN EXCLUSIVE MODE").executeUpdate();

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

View raw message