David, are there any additional cause exceptions available for that stack trace?
Sent from my phone, please excuse typos and brevity. On Feb 5, 2014 3:56 PM, "M. David Allen" <[email protected]> wrote: > I'm running into exceptions where my transactions fail to commit, even > though they're read-only cypher queries. I created a small test database > that's attached to some software I've written (running embedded DB). I'm > attaching messages.log for a lot of diagnostics. I ran some simple stub > code to populate the test database, then do some querying on it using > methods I wrote. > > I'm hoping to find some help with why this is happening. I can actually > safely ignore these transaction exceptions, and nothing seems to go > horribly wrong, but they just shouldn't be there and I don't want to ignore > them as my strategy. Below I'm providing what the exceptions look like, > and the code of the method that's creating these exceptions. In other > parts of my code base I have other similar queries (always read-only cypher > queries wrapped in transactions) that have the same problems. I ran this > stub to try to illustrate the problem in one specific compact way. > > The exception dumps -- > > 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.provenance.db.neo4j.Neo4JStorage.getMembers(Neo4JStorage.java:545) > at org.mitre.provenance.test.Stub.main(Stub.java:17) > 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) > > The code that's throwing the exception: > > public static ProvenanceCollection getMembers(PLUSWorkflow wf, User > user, int maximum) { > ViewedCollection d = new ViewedCollection(user); > if(db == null) initialize(); > > if(maximum <= 0 || maximum > Neo4JPLUSObjectFactory.MAX_OBJECTS) > maximum = 100; > > Map<String,Object>params = new HashMap<String,Object>(); > params.put("wf", wf.getId()); > String query = "start > r=relationship:relationship_auto_index(workflow={wf}) " + > "return r " + > "limit " + maximum; > > try (Transaction tx = db.beginTx()) { > ResourceIterator<Relationship> rs = > Neo4JStorage.execute(query, params).columnAs("r"); > > try { > while(rs.hasNext()) { > Relationship r = rs.next(); > > > d.addNode(Neo4JPLUSObjectFactory.newObject(r.getStartNode())); > > d.addNode(Neo4JPLUSObjectFactory.newObject(r.getEndNode())); > d.addEdge(Neo4JPLUSObjectFactory.newEdge(r)); > > } > } catch(PLUSException exc) { > exc.printStackTrace(); > } > > rs.close(); > tx.success(); > } catch(TransactionFailureException exc) { > log.severe("Failed transaction: " + exc.getMessage()); > exc.printStackTrace(); > } > > return d; > } // End getMembers > > Another relevant method (Neo4JStorage.execute): (db is a > GraphDatabaseService) > > public static ExecutionResult execute(String cypherQuery, > Map<String,Object>params) { > if(db == null) initialize(); > > ExecutionEngine engine = new ExecutionEngine(db); > > assert(db.index().getNodeAutoIndexer().isEnabled()); > > StringBuffer sb = new StringBuffer(""); > for(String k : params.keySet()) sb.append(" " + k + "=" + > params.get(k)); > > //log.info("EXECUTING: " + cypherQuery + " /" +sb); > return engine.execute(cypherQuery + " ", params); > } > > -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
