Hi,
what I do:
open a TDBFactory.createDataset()
run a sparql query that runs a long time
then the execution gets interrupted by a Thread.Interrupt exception.
which makes this trace:
com.hp.hpl.jena.tdb.base.file.FileException: FileAccessDirect
at
com.hp.hpl.jena.tdb.base.file.BlockAccessDirect.readByteBuffer(BlockAccessDirect.java:74)
at
com.hp.hpl.jena.tdb.base.file.BlockAccessDirect.read(BlockAccessDirect.java:61)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrFileAccess.getBlock(BlockMgrFileAccess.java:81)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrFileAccess.getRead(BlockMgrFileAccess.java:70)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrWrapper.getRead(BlockMgrWrapper.java:52)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrSync.getRead(BlockMgrSync.java:48)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrCache.getRead(BlockMgrCache.java:128)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrCache.getReadIterator(BlockMgrCache.java:138)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrWrapper.getReadIterator(BlockMgrWrapper.java:58)
at
com.hp.hpl.jena.tdb.base.recordbuffer.RecordBufferPageMgr.getReadIterator(RecordBufferPageMgr.java:53)
at
com.hp.hpl.jena.tdb.base.recordbuffer.RecordRangeIterator.<init>(RecordRangeIterator.java:82)
at
com.hp.hpl.jena.tdb.base.recordbuffer.RecordRangeIterator.iterator(RecordRangeIterator.java:40)
at
com.hp.hpl.jena.tdb.index.bplustree.BPlusTree.iterator(BPlusTree.java:383)
at
com.hp.hpl.jena.tdb.index.bplustree.BPlusTree.iterator(BPlusTree.java:366)
at
com.hp.hpl.jena.tdb.index.TupleIndexRecord.findWorker(TupleIndexRecord.java:164)
at
com.hp.hpl.jena.tdb.index.TupleIndexRecord.findOrScan(TupleIndexRecord.java:84)
at
com.hp.hpl.jena.tdb.index.TupleIndexRecord.performFind(TupleIndexRecord.java:78)
at com.hp.hpl.jena.tdb.index.TupleIndexBase.find(TupleIndexBase.java:91)
at com.hp.hpl.jena.tdb.index.TupleTable.find(TupleTable.java:197)
at
com.hp.hpl.jena.tdb.nodetable.NodeTupleTableConcrete.find(NodeTupleTableConcrete.java:169)
at
com.hp.hpl.jena.tdb.solver.StageMatchTuple.makeNextStage(StageMatchTuple.java:91)
at
com.hp.hpl.jena.tdb.solver.StageMatchTuple.makeNextStage(StageMatchTuple.java:37)
at
org.apache.jena.atlas.iterator.RepeatApplyIterator.hasNext(RepeatApplyIterator.java:49)
at
com.hp.hpl.jena.tdb.solver.SolverLib$IterAbortable.hasNext(SolverLib.java:195)
at org.apache.jena.atlas.iterator.Iter$4.hasNext(Iter.java:295)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:54)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterConcat.hasNextBinding(QueryIterConcat.java:83)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:81)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java:60)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterGroup$1.initializeIterator(QueryIterGroup.java:85)
at
org.apache.jena.atlas.iterator.IteratorDelayedInitialization.init(IteratorDelayedInitialization.java:37)
at
org.apache.jena.atlas.iterator.IteratorDelayedInitialization.hasNext(IteratorDelayedInitialization.java:47)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:54)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java:60)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:59)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterDistinctReduced.hasNextBinding(QueryIterDistinctReduced.java:54)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:72)
...
Caused by: java.nio.channels.ClosedByInterruptException
at
java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:184)
at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:627)
at
com.hp.hpl.jena.tdb.base.file.BlockAccessDirect.readByteBuffer(BlockAccessDirect.java:70)
... 62 more
after doing this the StoreConnecion/Dataset ..is not well since the
FileChannel got closed.
so running a query on this Dataset now causes:
161137 [ProcessThread] ERROR com.hp.hpl.jena.tdb.solver.BindingTDB -
get1(?v)
org.apache.jena.atlas.AtlasException:
java.nio.channels.ClosedChannelException
at org.apache.jena.atlas.io.IO.exception(IO.java:154)
at
com.hp.hpl.jena.tdb.base.file.BufferChannelFile.read(BufferChannelFile.java:113)
at
com.hp.hpl.jena.tdb.base.objectfile.ObjectFileStorage.read(ObjectFileStorage.java:337)
at com.hp.hpl.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:78)
at
com.hp.hpl.jena.tdb.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:178)
at
com.hp.hpl.jena.tdb.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:103)
at
com.hp.hpl.jena.tdb.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:74)
at
com.hp.hpl.jena.tdb.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:103)
at
com.hp.hpl.jena.tdb.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:74)
at
com.hp.hpl.jena.tdb.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:55)
at
com.hp.hpl.jena.tdb.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67)
at
com.hp.hpl.jena.tdb.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:55)
at com.hp.hpl.jena.tdb.solver.BindingTDB.get1(BindingTDB.java:123)
at
com.hp.hpl.jena.sparql.engine.binding.BindingBase.get(BindingBase.java:123)
at
com.hp.hpl.jena.sparql.engine.binding.BindingBase.get(BindingBase.java:131)
at com.hp.hpl.jena.sparql.expr.ExprVar.eval(ExprVar.java:61)
at com.hp.hpl.jena.sparql.expr.ExprVar.eval(ExprVar.java:54)
at
com.hp.hpl.jena.sparql.expr.aggregate.AccumulatorExpr.accumulate(AccumulatorExpr.java:43)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterGroup$1.initializeIterator(QueryIterGroup.java:112)
at
org.apache.jena.atlas.iterator.IteratorDelayedInitialization.init(IteratorDelayedInitialization.java:37)
at
org.apache.jena.atlas.iterator.IteratorDelayedInitialization.hasNext(IteratorDelayedInitialization.java:47)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterPlainWrapper.hasNextBinding(QueryIterPlainWrapper.java:54)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java:60)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:59)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterDistinctReduced.hasNextBinding(QueryIterDistinctReduced.java:54)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112)
at
com.hp.hpl.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:72)
...
So I try to remove the instance from the StoreConnection cache via release,
which causes:
Caused by: com.hp.hpl.jena.tdb.base.file.FileException: FileBase.sync
at com.hp.hpl.jena.tdb.base.file.FileBase.sync(FileBase.java:110)
at
com.hp.hpl.jena.tdb.base.file.BlockAccessBase.force(BlockAccessBase.java:135)
at
com.hp.hpl.jena.tdb.base.file.BlockAccessDirect._close(BlockAccessDirect.java:116)
at
com.hp.hpl.jena.tdb.base.file.BlockAccessBase.close(BlockAccessBase.java:152)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrFileAccess.close(BlockMgrFileAccess.java:142)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrWrapper.close(BlockMgrWrapper.java:132)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrSync.close(BlockMgrSync.java:119)
at
com.hp.hpl.jena.tdb.base.block.BlockMgrCache.close(BlockMgrCache.java:263)
at
com.hp.hpl.jena.tdb.index.bplustree.BPlusTree.close(BPlusTree.java:446)
at
com.hp.hpl.jena.tdb.index.TupleIndexRecord.close(TupleIndexRecord.java:225)
at com.hp.hpl.jena.tdb.index.TupleTable.close(TupleTable.java:206)
at
com.hp.hpl.jena.tdb.nodetable.NodeTupleTableConcrete.close(NodeTupleTableConcrete.java:244)
at com.hp.hpl.jena.tdb.store.TableBase.close(TableBase.java:57)
at
com.hp.hpl.jena.tdb.store.DatasetGraphTDB._close(DatasetGraphTDB.java:174)
at
com.hp.hpl.jena.sparql.core.DatasetGraphCaching.close(DatasetGraphCaching.java:135)
at com.hp.hpl.jena.tdb.StoreConnection.expel(StoreConnection.java:202)
at com.hp.hpl.jena.tdb.StoreConnection.release(StoreConnection.java:187)
...
Caused by: java.nio.channels.ClosedChannelException
at sun.nio.ch.FileChannelImpl.ensureOpen(FileChannelImpl.java:88)
at sun.nio.ch.FileChannelImpl.force(FileChannelImpl.java:349)
at com.hp.hpl.jena.tdb.base.file.FileBase.sync(FileBase.java:108)
... 42 more
So.. can I fix this on my end?
I use apache-jena-2.10.0 on Windows XP Professional SP 3 and jdk 1.6.0_022.
lG,
Simon