Well, that explains why your test isn't succeeding.
I think I've found the cause of the problem, however. It is *indeed* the
language default used by Derby. The following code is the problem:
>>>>>>
protected LCFException reinterpretException(LCFException theException)
{
if (Logging.db.isDebugEnabled())
Logging.db.debug("Reinterpreting exception
'"+theException.getMessage()+"'. The exception type is
"+Integer.toString(theException.getErrorCode()));
if (theException.getErrorCode() != LCFException.DATABASE_CONNECTION_ERROR)
return theException;
Throwable e = theException.getCause();
if (!(e instanceof java.sql.SQLException))
return theException;
if (Logging.db.isDebugEnabled())
Logging.db.debug("Exception "+theException.getMessage()+" is possibly a
transaction abort signal");
String message = e.getMessage();
if (message.indexOf("due to a deadlock") != -1)
return new
LCFException(message,e,LCFException.DATABASE_TRANSACTION_ABORT);
// Note well: We also have to treat 'duplicate key' as a transaction abort,
since this is what you get when two threads attempt to
// insert the same row. (Everything only works, then, as long as there is
a unique constraint corresponding to every bad insert that
// one could make.)
if (message.indexOf("duplicate key") != -1)
return new
LCFException(message,e,LCFException.DATABASE_TRANSACTION_ABORT);
if (Logging.db.isDebugEnabled())
Logging.db.debug("Exception "+theException.getMessage()+" is NOT a
transaction abort signal");
return theException;
}
<<<<<<
It looks like Derby has a specific exception class instead for these kinds of
exceptions, so I will be able to test them directly rather than look at text.
Stay tuned.
Karl
-----Original Message-----
From: ext [email protected] [mailto:[email protected]]
Sent: Wednesday, July 21, 2010 8:25 AM
To: [email protected]
Subject: Re: Beginner's question
Hi,
I'm getting the same exception as Marc except that on my machine it's German
text ;o)
I tried it first with jdk 1.6_13, then updated to 1.6_21 based on a new SVN
Update. But I haven't been successful yet.
Carina
-------- Original-Nachricht --------
> Datum: Wed, 21 Jul 2010 12:13:22 +0200
> Von: [email protected]
> An: [email protected]
> Betreff: Re: Beginner\'s question
> I'm definitely not seeing this behavior here, with sun jdk 1.6. It's
> worth getting to the bottom of.
>
> Can you do the following:
>
> (1) Svn co a completely fresh version of LCF
> (2) Ant, making sure ant is actually using jdk 1.6
>
> If you *still* get this problem, please let me know. It's not clear what
> the difference is, but there's got to be a difference somewhere. I hope it
> is not how Derby works on French machines. ;-)
>
> Karl
>
>
> >>>>>>
> Worker thread aborting and restarting due to database connection reset:
> Database exception: Exception doing query: L'instruction a été abandonnée
> parce qu'elle aurait entraîné la duplication d'une valeur de clé dans
> une contrainte de clé ou d'index unique identifié par 'I1279701064805'
> définie sur 'INGESTSTATUS'.
> org.apache.lcf.core.interfaces.LCFException: Database exception: Exception
> doing query: L'instruction a été abandonnée parce qu'elle aurait
> entraîné la duplication d'une valeur de clé dans une contrainte de clé ou
> d'index unique identifié par 'I1279701064805' définie sur 'INGESTSTATUS'.
> at
> org.apache.lcf.core.database.Database.executeViaThread(Database.java:421)
> at
> org.apache.lcf.core.database.Database.executeUncachedQuery(Database.java:449)
> at
> org.apache.lcf.core.database.Database$QueryCacheExecutor.create(Database.java:1072)
> at
> org.apache.lcf.core.cachemanager.CacheManager.findObjectsAndExecute(CacheManager.java:144)
> at
> org.apache.lcf.core.database.Database.executeQuery(Database.java:167)
> at
> org.apache.lcf.core.database.DBInterfaceDerby.performModification(DBInterfaceDerby.java:615)
> at
> org.apache.lcf.core.database.DBInterfaceDerby.performInsert(DBInterfaceDerby.java:177)
> at
> org.apache.lcf.core.database.BaseTable.performInsert(BaseTable.java:76)
> at
> org.apache.lcf.agents.incrementalingest.IncrementalIngester.noteDocumentIngest(IncrementalIngester.java:1267)
> at
> org.apache.lcf.agents.incrementalingest.IncrementalIngester.performIngestion(IncrementalIngester.java:410)
> at
> org.apache.lcf.agents.incrementalingest.IncrementalIngester.documentIngest(IncrementalIngester.java:304)
> at
> org.apache.lcf.crawler.system.WorkerThread$ProcessActivity.ingestDocument(WorkerThread.java:1586)
> at
> org.apache.lcf.crawler.connectors.filesystem.FileConnector.processDocuments(FileConnector.java:275)
> at
> org.apache.lcf.crawler.connectors.BaseRepositoryConnector.processDocuments(BaseRepositoryConnector.java:516)
> at
> org.apache.lcf.crawler.system.WorkerThread.run(WorkerThread.java:585)
> Caused by: java.sql.SQLIntegrityConstraintViolationException:
> L'instruction a été abandonnée parce qu'elle aurait entraîné la duplication
> d'une
> valeur de clé dans une contrainte de clé ou d'index unique identifié par
> 'I1279701064805' définie sur 'INGESTSTATUS'.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.Util.generateCsSQLException(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.executeUpdate(Unknown
> Source)
> at org.apache.lcf.core.database.Database.execute(Database.java:566)
> at
> org.apache.lcf.core.database.Database$ExecuteQueryThread.run(Database.java:381)
> Caused by: java.sql.SQLException: L'instruction a été abandonnée parce
> qu'elle aurait entraîné la duplication d'une valeur de clé dans une
> contrainte de clé ou d'index unique identifié par 'I1279701064805' définie
> sur 'INGESTSTATUS'.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
> Source)
> ... 11 more
>
> However i can start jetty and get the ui working.
>
> Thanks
> marc
> <<<<<<
>
>
--
GMX DSL: Internet-, Telefon- und Handy-Flat ab 19,99 EUR/mtl.
Bis zu 150 EUR Startguthaben inklusive! http://portal.gmx.net/de/go/dsl