On 09/08/12 17:43, Simon Helsen wrote:
Hi,
I am currently testing out things internally with the just released 2.7.3
but I am running into some problems. One seems pretty low-level and is
worrysome. This is the exception:
Caused by: com.hp.hpl.jena.tdb.TDBException: Allocation attempt on
NodeTableReadonly
at
com.hp.hpl.jena.tdb.nodetable.NodeTableReadonly.getAllocateNodeId(
NodeTableReadonly.java:37)
at com.hp.hpl.jena.tdb.store.GraphNamedTDB.getGraphNodeId(
GraphNamedTDB.java:149)
at com.hp.hpl.jena.tdb.store.GraphNamedTDB.countThis(
GraphNamedTDB.java:124)
at com.hp.hpl.jena.tdb.store.GraphTDBBase.graphBaseSize(
GraphTDBBase.java:178)
at com.hp.hpl.jena.sparql.graph.GraphBase2.size(
GraphBase2.java:381)
at com.hp.hpl.jena.sparql.graph.GraphBase2.isEmpty(
GraphBase2.java:432)
at com.hp.hpl.jena.rdf.model.impl.ModelCom.isEmpty(
ModelCom.java:871)
at com.ibm.team.jfs.rdf.internal.jena.tdb.JenaTxTdbProvider$8.run(
JenaTxTdbProvider.java:991)
at com.ibm.team.jfs.rdf.internal.jena.tdb.JenaTxTdbProvider$8.run(
JenaTxTdbProvider.java:1)
at
com.ibm.team.jfs.rdf.internal.jena.tdb.JenaTxTdbProvider.storeOperation(
JenaTxTdbProvider.java:204)
... 56 more
Unfortunately, I can't seem to reliably reproduce it even though I am not
running any concurrent tests. Any idea who this kind of exception can
occur and what I can do to perhaps construct a test case?
none of this has been observed in 2.7.1 so it must be related to recent
changes
I have no idea why it is not reliably produced. You are inside a read
transaction (your stacktrace and report don't mention it but otherwise
NodeTableReadonly isn't used).
I've fixed the problem - it's to do with a graph that does not exist in
the database. The code is trying to allocate a node for it in a way
that writes the node out. It shouldn't.
If it is not produced reliably, something else is going on in your code.
Either earlier code is creating the graph sometimes or you do in fact
have some concurrency.
Andy
thanks
Simon