OK, so here's an exception stack for a failed transaction on a read-only set of operations, and attached is a full messages.log output.
I've reviewed the messages.log myself, and I honestly can't find anything useful in there. Is there any additional setting I can use for an embedded database that will produce more information?
Finally, to keep it simple I'm using a test stub below. I blew away the entire database (deleted directory from the disk) then ran a simple test stub which populates the database with a bunch of stuff (all of that went fine) and then does a few simple queries. The transaction that fails does so AFTER successfully executing this cypher query, and doing various kinds of property reading.
start r=relationship:relationship_auto_index(workflow={wf}) return r limit 50
{wf} is bound to a String value passed in as part of a HashMap<String,Object>. After the cypher query executes, I just create a bunch of domain objects, which requires reading properties from the nodes that come back.
Jan 03, 2014 9:51:42 AM org.mitre.provenance.db.neo4j.Neo4JStorage getMembers
SEVERE: Failed transaction: Unable to commit transaction
org.neo4j.graphdb.TransactionFailureException: Unable to commit transaction
at org.neo4j.kernel.TopLevelTransaction.close(TopLevelTransaction.java:134)
at org.mitre.prov.db.neo4j.Neo4JStorage.getMembers(Neo4JStorage.java:503)
at org.mitre.prov.test.Stub.main(Stub.java:25)
Caused by: javax.transaction.RollbackException: Failed to commit, transaction rolled back
at org.neo4j.kernel.impl.transaction.TxManager.rollbackCommit(TxManager.java:623)
at org.neo4j.kernel.impl.transaction.TxManager.commit(TxManager.java:402)
at org.neo4j.kernel.impl.transaction.TransactionImpl.commit(TransactionImpl.java:122)
at org.neo4j.kernel.TopLevelTransaction.close(TopLevelTransaction.java:124)
... 2 more
Thanks,
David