This is occurring for us using Derby 10.6.1.0 in embedded mode, however it's 
embedded in daemon process which has a CORBA interface into it, so there can be 
multiple processes with multiple threads hitting it, which complicates things a 
bit.  It seems like we might have a threading issue, but we are having trouble 
tracking it down. We actually never saw the problem until some time after we 
moved our compiler version from jdk-1.5 to jdk-1.6 (1.6.0_20) however our 
runtime has been 1.6.0_14-b08 for a long time. Not sure if that is related 
however...

I hoping someone can better explain how derby uses the "tmp/" subdirectory and 
could provide some ideas on what might be going on.  I haven't been able to 
find anything in Jira that looks related.

What we see are spurious errors of the form:
   Caused by: java.io.FileNotFoundException: 
/build/v3_3_0_97/config/data/tmp/T1283512174014.tmp (No such file or directory)
on SELECT or DELETE statements. The DELETEs are always cascade deletes where 
the children tables have CLOB columns, and the SELECTs always contain ORDER BY 
clauses - that seems to be the common denominator.   Just from browsing the 
stack traces it looks like Derby uses the "tmp/" sub-directory to hold pending 
results and it's somehow disappearing before it should.  It is not reliably 
repeatable, even though it's happening a couple times a week in our test suite, 
but that is 28,000+ tests across a bunch of processes - so it's not something I 
have been able to replicate in a usefully small test case.

I basically don't have a good understanding of what the "tmp/" directory is 
used for, or when it's created or goes away.  When the error occurs (middle of 
night), the next morning I typically don't see a "tmp/" directory at all, so 
not only are the "tmp/Tnnnnnnnnn.tmp" files missing, the whole "tmp/" directory 
is missing.

Stack trace looks like:

[WARN ] 2010-09-03 07:16:59,428 data.jdbc.JdbcQueryResultExecutor 
(JdbcQueryResultExecutor.java:114): Cannot execute query: 'SELECT 
o.COORD_OP_CODE, p.PARAMETER_NAME, p.PARAMETER_CODE, o.PARAMETER_VALUE, 
o.PARAM_VALUE_FILE_REF, o.UOM_CODE FROM EPSG_COORDOPERATIONPARAMVALUE o INNER 
JOIN EPSG_COORDOPERATIONPARAM p ON (o.PARAMETER_CODE = p.PARAMETER_CODE) WHERE 
o.COORD_OP_METHOD_CODE = 9807 ORDER BY o.COORD_OP_CODE ASC'. Reason: An 
unexpected exception was thrown
java.sql.SQLException: An unexpected exception was thrown
                at 
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
                at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown 
Source)
                at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown 
Source)
                at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
Source)
                at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown 
Source)
                at 
org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
                at 
org.apache.derby.impl.jdbc.ConnectionChild.handleException(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.executeQuery(Unknown Source)
                at 
com.openspirit.plugin.data.jdbc.JdbcQueryResultExecutor.executeQuery(JdbcQueryResultExecutor.java:104)
                [...snip...]
Caused by: java.sql.SQLException: An unexpected exception was thrown
                at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
                at 
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
 Source)
                ... 21 more
Caused by: java.sql.SQLException: Java exception: 
'/build/v3_3_0_97/config/data/tmp/T1283512174014.tmp (No such file or 
directory): java.io.FileNotFoundException'.
                at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
                at 
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
 Source)
                at 
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
                at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown 
Source)
                at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)
                at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
Source)
                ... 18 more
Caused by: java.io.FileNotFoundException: 
/build/v3_3_0_97/config/data/tmp/T1283512174014.tmp (No such file or directory)
                at java.io.FileOutputStream.open(Native Method)
                at java.io.FileOutputStream.<init>(Unknown Source)
                at java.io.FileOutputStream.<init>(Unknown Source)
                at org.apache.derby.impl.io.DirFile.getOutputStream(Unknown 
Source)
                at 
org.apache.derby.impl.store.raw.data.StreamFileContainer.run(Unknown Source)
                at java.security.AccessController.doPrivileged(Native Method)
                at 
org.apache.derby.impl.store.raw.data.StreamFileContainer.privGetOutputStream(Unknown
 Source)
                at 
org.apache.derby.impl.store.raw.data.StreamFileContainer.load(Unknown Source)
                at 
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.addAndLoadStreamContainer(Unknown
 Source)
                at 
org.apache.derby.impl.store.raw.xact.Xact.addAndLoadStreamContainer(Unknown 
Source)
                at 
org.apache.derby.impl.store.access.sort.MergeSort.createMergeRun(Unknown Source)
                at 
org.apache.derby.impl.store.access.sort.MergeInserter.insert(Unknown Source)
                at 
org.apache.derby.impl.sql.execute.SortResultSet.loadSorter(Unknown Source)
                at 
org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown Source)
                at 
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source)
                at 
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
                at 
org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
                ... 14 more


------------------ Java Information ------------------
Java Version:    1.6.0_14
Java Vendor:     Sun Microsystems Inc.
Java home:       /build/v3_3_0_97/jre/Linux_i386_32
Java classpath:
/build/v3_3_0_97/lib/3rdparty/derby.jar:/build/v3_3_0_97/classes:/build/v3_3_0_97/lib/OpenSpirit.jar:/build/v3_3_0_97/lib/OpenSpiritImpl-3.jar:/build/v3_3_0_97/plugins/corba/OspCorba-1.jar:/build/v3_3_0_97/plugins/corba/RemoteDataProvider-2.jar:/build/v3_3_0_97/plugins/corba/RemoteEvent-1.jar:/build/v3_3_0_97/classes/osporg.jar:/build/v3_3_0_97/classes/ospcom.jar:/build/v3_3_0_97/lib/3rdparty/orb.jar:/build/v3_3_0_97/lib/3rdparty/ojdbc14.jar:
OS name:         Linux
OS architecture: i386
OS version:      2.6.18-8.el5
Java user name:  rgh
Java user home:  /users/rgh
Java user dir:   /build/v3_3_0_97
java.specification.name: Java Platform API Specification
java.specification.version: 1.6
java.runtime.version: 1.6.0_14-b08
--------- Derby Information --------
JRE - JDBC: Java SE 6 - JDBC 4.0
[/build/v3_3_0_97/lib/3rdparty/derby.jar] 10.6.1.0 - (938214)

Thanks for any help,

Richard Hash
OpenSpirit Corporation

Reply via email to