Details
Description
I've encountered what appears to be a bug related to threading. After an INSERT operation, if the invoking thread terminates too quickly, Derby throws an XSDG.
The bug is a bit difficult to isolate but it occurs consistently in the following situation (with a particular database and an operation of a particular size):
Derby is running in embedded mode with autocommit on.
The application performs an INPUT operation from a thread that is not the main thread. The INPUT is issued using a PreparedStatement. The INPUT adds ~ 256 records of six fields each. (Note that INSERTs of this size seem to work fine in other contexts.)
The preparedStatement.executeUpdate() seems to excute successfully; at least it returns without throwing an exception.
The thread that invoked the INPUT operation then terminates (but NOT the application). The next INPUT operation then results in an
"ERROR XSDG1: Page Page(7,Container(0, 1344)) could not be written to disk, please check if disk is full."
The disk is definitely not full.
HOWEVER, if I put the calling thread to sleep for a second before it exits, the problem does not occur.
I'm not quite sure what to make of this. I was under the impression that most of Derby's activity occurs in the application's threads. Could Derby be creating a child thread from in the application thread, which dies when the parent thread terminates?
Thanks
Attachments
Attachments
Issue Links
- is related to
-
DERBY-4463 JMX test in nightly test suite failed with: JMXTest:clientjava.lang.InterruptedException:
- Closed
-
DERBY-4813 TriggerTests failed to apply log record to store
- Closed
- relates to
-
DERBY-4461 'testD151(...Derby151Test)java.sql.SQLException: Failed to start database' (and more ...) on Suse EE S 10 Linux/IBM 1.6.0, Fedora Core 5/Sun 1.6.0-b105, Win XP/Sun 1.6.0_10
- Closed
-
DERBY-4481 multiple log related errors (e.g. ERROR XSLAL in MultiByteClobTest ) started occuring intermittently in IBM 1.5 runs
- Closed
-
DERBY-4741 Make embedded Derby work reliably in the presence of thread interrupts
- Closed