Uploaded image for project: 'Apache Jena'
  1. Apache Jena
  2. JENA-308

Index corruption after killing process

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • TDB 0.9.1, TDB 0.9.4
    • TDB 0.9.4
    • TDB
    • None
    • Windows 2008/7 (64 bit) both on IBM and SUN JVM 6. Direct mode

    Description

      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

      Attachments

        1. journalRecoveryTest.zip
          3 kB
          Simon Helsen

        Activity

          People

            andy Andy Seaborne
            shelsen Simon Helsen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: