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

Reply via email to