Hello for All,
Questions first:
Deadlock between system tables - is it Derby bug?
Is it possible to avoid deadlock by configuring derby DB, let say changing lock
granularity?
Issue:
I am using 3d part library which makes all transactions with Derby and in one single situation (unfortunately not reproducible)
I got error printing in log about deadlock. It could be 3d part library problem, however from the log it obvious that deadlock
appeared on Derby system tables (they are managed by Derby itself), therefore, I think, it is related to Derby code, which
doesn't synchronize two transactions accessing system tables. Here is log:
Lock : TABLE, SYSCOLUMNS, Tablelock
Waiting XID : {9404, IS} , APP, SELECT cdo_version, cdo_created, cdo_revised, cdo_resource, cdo_container, cdo_feature,
name, id FROM core_File WHERE cdo_id= ? AND (cdo_revised = 0 )
Granted XID : {7351, IX}
Lock : ROW, SYSTABLES, (2,14)
Waiting XID : {7351, X} , APP, CREATE TABLE core_File (cdo_id BIGINT NOT NULL, cdo_version INTEGER NOT NULL, cdo_class
BIGINT NOT NULL, cdo_created BIGINT NOT NULL, cdo_revised BIGINT NOT NULL, cdo_resource BIGINT NOT NULL, cdo_container BIGINT
NOT NULL, cdo_feature INTEGER NOT NULL, name VARCHAR(32672), id VARCHAR(32672))
Granted XID : {9404, S}
. The selected victim is XID : 9404.
Thanks,
--
Egidijus