[ 
https://issues.apache.org/jira/browse/JENA-308?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13444493#comment-13444493
 ] 

Simon Helsen commented on JENA-308:
-----------------------------------

Finally, I should make a few comments about the actual test case. Because we 
need to kill ongoing (write) transactions and repeat the process often enough, 
I decided to simulate this by running the actual logic in a separate thread 
which I would kill after a certain time. To make sure that no cleanup 
activities take place, I use ThreadDeath to immediately leave the process. 

Moreover, because I want to simulate a fresh startup, I have to call 
StoreConnection.reset();

I realize this is not a 100% perfect simulation, I think the relevant behavior 
is similar to what would happen on process kill. Either way, we have seen the 
exceptions with a real process kill
                
> Index corruption after killing process
> --------------------------------------
>
>                 Key: JENA-308
>                 URL: https://issues.apache.org/jira/browse/JENA-308
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: TDB
>    Affects Versions: TDB 0.9.1, TDB 0.9.4
>         Environment: Windows 2008/7 (64 bit) both on IBM and SUN JVM 6. 
> Direct mode
>            Reporter: Simon Helsen
>            Priority: Critical
>
> We are faced with a series of possible exceptions which may or may not occur 
> after an active tdb store is killed. The most common exception has the form:
> Exception in thread "Thread-3" 
> com.hp.hpl.jena.tdb.transaction.TDBTransactionException: Feaild to read block 
> checksum.
>       at com.hp.hpl.jena.tdb.transaction.Journal._read(Journal.java:238)
>       at 
> com.hp.hpl.jena.tdb.transaction.Journal._readJournal(Journal.java:197)
>       at com.hp.hpl.jena.tdb.transaction.Journal.access$1(Journal.java:192)
>       at 
> com.hp.hpl.jena.tdb.transaction.Journal$IteratorEntries.moveToNext(Journal.java:267)
>       at 
> com.hp.hpl.jena.tdb.transaction.Journal$IteratorEntries.moveToNext(Journal.java:1)
>       at 
> org.openjena.atlas.iterator.IteratorSlotted.hasNext(IteratorSlotted.java:67)
>       at 
> com.hp.hpl.jena.tdb.transaction.JournalControl.scanForCommit(JournalControl.java:148)
>       at 
> com.hp.hpl.jena.tdb.transaction.JournalControl.recoverFromJournal(JournalControl.java:127)
>       at 
> com.hp.hpl.jena.tdb.StoreConnection._makeAndCache(StoreConnection.java:234)
>       at com.hp.hpl.jena.tdb.StoreConnection.make(StoreConnection.java:214)
>       at 
> com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction.<init>(DatasetGraphTransaction.java:76)
>       at com.hp.hpl.jena.tdb.sys.TDBMaker._create(TDBMaker.java:57)
>       at 
> com.hp.hpl.jena.tdb.sys.TDBMaker.createDatasetGraphTransaction(TDBMaker.java:45)
>       at 
> com.hp.hpl.jena.tdb.TDBFactory._createDatasetGraph(TDBFactory.java:104)
>       at com.hp.hpl.jena.tdb.TDBFactory.createDatasetGraph(TDBFactory.java:73)
>       at com.hp.hpl.jena.tdb.TDBFactory.createDataset(TDBFactory.java:52)
> Other exceptions are possible (see comments below). I have been able to 
> produce a standalone java program/test case which simulates a process kill 
> and is able to produce the exception after a non-deterministic time. It runs 
> an iteration until it hits one of the possible problems. Sometimes, an 
> exception hits after just 2 iterations, other times, it can take 40 runs or 
> more before hitting a problem. Because I don't know what the cause is here, I 
> have not been able to make the test case more specific

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to