[
https://issues.apache.org/jira/browse/DERBY-3683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-3683:
--------------------------------------
Issue & fix info: [Workaround attached]
Urgency: Normal
Triaged for 10.5.2.
> SYSCS_COMPRESS_TABLE gets deadlock while executing concurrently with other
> user threads
> ---------------------------------------------------------------------------------------
>
> Key: DERBY-3683
> URL: https://issues.apache.org/jira/browse/DERBY-3683
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.4.1.3
> 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:
> Lock : ROW, SYSCONGLOMERATES, (7,16)
> 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);
> cs.execute();
> conn.commit();
> Problem goes away if I acquire exclusive table lock manually right before the
> compress table statement:
> 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.