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

Andy Seaborne commented on JENA-1581:
-------------------------------------

If all accesses are inside transactions, then yes that's right.

There is no need to close the dataset at {{ds.close}} - do you get occasional 
warnings from this call?

Accessing the base dataset is a bad idea. There is no need to release the 
dataset before exit. In fact, there io no need to access {{StoreConnection}} - 
{{TDBFactory}} is enough.

There is no need to {{TDBFactory.createDataset}} each time if you want to keep 
it stored somewhere that's fine (internally, {{StoreConnection}} is used by 
{{TDBFactory}} and has a cache anyway).

{{NodeLib.encodeStore}} is only accessed in a single threaded fashion (see the 
comments for who locks it) because there is only one true writer at a time.

Do you have more than one dataset (by location) or possibly have different 
names for the same location?




> BufferOverflowException when
> ----------------------------
>
>                 Key: JENA-1581
>                 URL: https://issues.apache.org/jira/browse/JENA-1581
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: TDB
>         Environment: Jena 3.8
>            Reporter: Scott Patterson
>            Priority: Major
>
> I can not add a small number of named graphs (~1000) to the TDB without 
> encountering a BufferOverflowException. I have a single thread that adds all 
> the graphs and I get lots of these exceptions with different named graphs 
> each time. Any thoughts?
> {noformat}
> Caused by: java.nio.BufferOverflowException
>  at java.nio.Buffer.nextPutIndex(Buffer.java:532)
>  at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:169)
>  at org.apache.jena.atlas.io.BlockUTF8.fromCharsBuffer(BlockUTF8.java:172)
>  at org.apache.jena.atlas.io.BlockUTF8.fromChars(BlockUTF8.java:86)
>  at org.apache.jena.atlas.io.BlockUTF8.fromChars(BlockUTF8.java:230)
>  at org.apache.jena.tdb.store.nodetable.NodecSSE.encode(NodecSSE.java:89)
>  at org.apache.jena.tdb.lib.NodeLib.encodeStore(NodeLib.java:74)
>  at 
> org.apache.jena.tdb.store.nodetable.NodeTableNative.writeNodeToTable(NodeTableNative.java:175)
>  at 
> org.apache.jena.tdb.store.nodetable.NodeTableNative.accessIndex(NodeTableNative.java:152)
>  at 
> org.apache.jena.tdb.store.nodetable.NodeTableNative._idForNode(NodeTableNative.java:125)
>  at 
> org.apache.jena.tdb.store.nodetable.NodeTableNative.getAllocateNodeId(NodeTableNative.java:79)
>  at 
> org.apache.jena.tdb.store.nodetable.NodeTableCache._idForNode(NodeTableCache.java:152)
>  at 
> org.apache.jena.tdb.store.nodetable.NodeTableCache.getAllocateNodeId(NodeTableCache.java:91)
>  at 
> org.apache.jena.tdb.store.nodetable.NodeTableWrapper.getAllocateNodeId(NodeTableWrapper.java:40)
>  at 
> org.apache.jena.tdb.store.nodetable.NodeTableInline.getAllocateNodeId(NodeTableInline.java:51)
>  at 
> org.apache.jena.tdb.store.nodetupletable.NodeTupleTableConcrete.addRow(NodeTupleTableConcrete.java:85)
>  at org.apache.jena.tdb.store.QuadTable.add(QuadTable.java:60)
>  at 
> org.apache.jena.tdb.store.DatasetGraphTDB.addToNamedGraph(DatasetGraphTDB.java:97)
>  at 
> org.apache.jena.sparql.core.DatasetGraphTriplesQuads.add(DatasetGraphTriplesQuads.java:44)
>  at org.apache.jena.sparql.core.GraphView.performAdd(GraphView.java:152)
>  at 
> org.apache.jena.graph.GraphUtil$$Lambda$145.0000000020B643F0.accept(Unknown 
> Source)
>  at java.util.ArrayList$Itr.forEachRemaining(ArrayList.java:910)
>  at 
> org.apache.jena.graph.GraphUtil.addIteratorWorkerDirect(GraphUtil.java:151)
>  at org.apache.jena.graph.GraphUtil.addIteratorWorker(GraphUtil.java:145)
>  at org.apache.jena.graph.GraphUtil.addInto(GraphUtil.java:139)
>  at 
> org.apache.jena.sparql.core.DatasetGraphTriplesQuads.addGraph(DatasetGraphTriplesQuads.java:80)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to