On 27/04/13 16:24, David Jordan wrote:

Tomorrow I will try to get into work, download the TDB source, set a breakpoint 
on this FileException to try and diagnose this myself. This happens when I 
first try to access a named Model in TDB that had been stored previously. 
Unless there is a bug in TDB, I am guessing that this suggests that an earlier 
transaction left the file in a corrupted state?

So what can cause TDB to get corrupted? Does every access need to be enclosed 
in a transaction? If you are strictly reading the TDB database, do you need to 
enclose all accesses in a read transaction, when you know there is no update 
transactions? Is there a need to (always) call the sync() method? Does sync() 
automatically get called when you commit or end a transaction? (I would hope 
so.)

I have never examined TDB source before, it could take quiet a while to figure 
out what is going wrong. Any suggestions for resolving this issue are greatly 
appreciated.

On Apr 26, 2013, at 3:22 PM, David Jordan wrote:


I seem to randomly get the following file exception. Once I get this, I 
continue to get it until I remove all the data for the model in question. I 
reported this before, but I don’t believe I got any response. I am not sure 
what is triggering this. The same code works fine for a while, and then this 
happens.

http://mail-archives.apache.org/mod_mbox/jena-users/201304.mbox/%3C517AA3E5.7050609%40apache.org%3E

Once the node table is corrupted, it's permanently broken.

Using TDB (more generalised) transactions will protected better - Model transactions are only a weak sync and a exit can cause problems.

When all the triple using that part of the node table, it'll appear to work but add back a triple using a term that is broken and it'll reappear.

        Andy



    [junit] Caused by: com.hp.hpl.jena.tdb.base.file.FileException: 
ObjectFileStorage.read[nodes.dat](30314841)[filesize=30315565][file.size()=30315565]:
 Impossibly large object : 876033377 bytes > filesize-(loc+SizeOfInt)=720
    [junit]     at 
com.hp.hpl.jena.tdb.base.objectfile.ObjectFileStorage.read(ObjectFileStorage.java:346)
    [junit]     at com.hp.hpl.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:78)
    [junit]     at 
com.hp.hpl.jena.tdb.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:178)
    [junit]     at 
com.hp.hpl.jena.tdb.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:103)
    [junit]     at 
com.hp.hpl.jena.tdb.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:74)
    [junit]     at 
com.hp.hpl.jena.tdb.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:103)
    [junit]     at 
com.hp.hpl.jena.tdb.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:74)
    [junit]     at 
com.hp.hpl.jena.tdb.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:55)
    [junit]     at 
com.hp.hpl.jena.tdb.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67)
    [junit]     at com.hp.hpl.jena.tdb.lib.TupleLib.quad(TupleLib.java:159)
    [junit]     at com.hp.hpl.jena.tdb.lib.TupleLib.quad(TupleLib.java:153)
    [junit]     at com.hp.hpl.jena.tdb.lib.TupleLib.access$100(TupleLib.java:45)
    [junit]     at com.hp.hpl.jena.tdb.lib.TupleLib$4.convert(TupleLib.java:87)
    [junit]     at com.hp.hpl.jena.tdb.lib.TupleLib$4.convert(TupleLib.java:83)
    [junit]     at org.apache.jena.atlas.iterator.Iter$4.next(Iter.java:301)
    [junit]     at 
com.hp.hpl.jena.tdb.store.GraphTDBBase$ProjectQuadsToTriples.next(GraphTDBBase.java:207)
    [junit]     at 
com.hp.hpl.jena.tdb.store.GraphTDBBase$ProjectQuadsToTriples.next(GraphTDBBase.java:195)
    [junit]     at 
com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
    [junit]     at 
com.hp.hpl.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94)
    [junit]     at 
com.hp.hpl.jena.mem.TrackingTripleIterator.next(TrackingTripleIterator.java:47)
    [junit]     at 
com.hp.hpl.jena.mem.TrackingTripleIterator.next(TrackingTripleIterator.java:31)
    [junit]     at 
com.hp.hpl.jena.reasoner.rulesys.impl.RETEEngine.fastInit(RETEEngine.java:151)
    [junit]     at 
com.hp.hpl.jena.reasoner.rulesys.FBRuleInfGraph.prepare(FBRuleInfGraph.java:483)
    [junit]     at 
com.hp.hpl.jena.ontology.impl.OntModelImpl.prepare(OntModelImpl.java:2694)
    [junit]     at 
com.sas.ta.om.test.TestBase.setupConfiguration(TestBase.java:213)
    [junit]     at com.sas.ta.om.test.TestBase.<clinit>(TestBase.java:85)
    [junit]
    [junit]
    [junit] TEST com.sas.ta.om.test.HasValueRestrictionOnPropertyTest FAILED
    [junit] Running com.sas.ta.om.test.PreventAssigningInvalidPropertyValueTest
    [junit] Testsuite: 
com.sas.ta.om.test.PreventAssigningInvalidPropertyValueTest
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
    [junit]
    [junit] Null Test:  Caused an ERROR
    [junit] com.sas.ta.om.test.TestBase
    [junit] java.lang.NoClassDefFoundError: com.sas.ta.om.test.TestBase
    [junit]     at java.lang.Class.forName0(Native Method)


David Jordan
Senior Software Developer
SAS Institute Inc.
Health & Life Sciences, Research & Development
Bldg R ▪ Office 4467
600 Research Drive ▪ Cary, NC 27513
Tel: 919 531 1233 ▪ [email protected]<mailto:[email protected]>
www.sas.com<http://www.sas.com/>
SAS® … THE POWER TO KNOW®



Reply via email to