You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Jörg von Frantzius (JIRA)" <de...@db.apache.org> on 2005/09/14 16:41:54 UTC

[jira] Commented: (DERBY-151) Thread termination -> XSDG after operation is 'complete'

    [ http://issues.apache.org/jira/browse/DERBY-151?page=comments#action_12327401 ] 

Jörg von Frantzius commented on DERBY-151:
------------------------------------------

I'm seeing the same, on Windows XP (Derby 10.1.1.0). Here's my stacktrace:

[main][14.09.2005 16:37:36,115] DEBUG Request.java:66 - INSERT INTO KUENSTLER (LEBENSDATEN,LITERATUR,GEBURTS_ORT,KUENSTLER_NAME,LEGACY_ID,"NAME",GEBURTSDATUM,LAST_MODIFICATION,ERGAENZUNGEN,ADRESSE,GESCHLECHT,STERBEDATUM,VORNAME,BIOGRAPHIE,ID) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
ERROR XSDG1: Page Page(7,Container(0, 1088)) could not be written to disk, please check if disk is full.
	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
	at org.apache.derby.impl.store.raw.data.CachedPage.writePage(Unknown Source)
	at org.apache.derby.impl.store.raw.data.CachedPage.createIdentity(Unknown Source)
	at org.apache.derby.impl.services.cache.CachedItem.takeOnIdentity(Unknown Source)
	at org.apache.derby.impl.services.cache.Clock.addEntry(Unknown Source)
	at org.apache.derby.impl.services.cache.Clock.create(Unknown Source)
	at org.apache.derby.impl.store.raw.data.FileContainer.initPage(Unknown Source)
	at org.apache.derby.impl.store.raw.data.FileContainer.newPage(Unknown Source)
	at org.apache.derby.impl.store.raw.data.BaseContainer.addPage(Unknown Source)
	at org.apache.derby.impl.store.raw.data.BaseContainerHandle.addPage(Unknown Source)
	at org.apache.derby.impl.store.access.heap.HeapController.doInsert(Unknown Source)
	at org.apache.derby.impl.store.access.heap.HeapController.insertAndFetchLocation(Unknown Source)
	at org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown Source)
	at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown Source)
	at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source)
	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(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.executeUpdate(Unknown Source)

> Thread termination -> XSDG after operation is 'complete'
> --------------------------------------------------------
>
>          Key: DERBY-151
>          URL: http://issues.apache.org/jira/browse/DERBY-151
>      Project: Derby
>         Type: Bug
>   Components: Store
>     Versions: 10.0.2.1
>  Environment: Linux kernel 2.4.21-243-athlon (SuSE 9.0)
>     Reporter: Barnet Wagman

>
> 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

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira