The choice of ignoring those calls, is made against the alternative of
throwing an exception. The reason for ignoring the neo4j transactional
calls, is to be more compatible with existing ne04j code that may be
using the neo4j transactional code, with the goal that the JTA
transaction controls the underlying ne04j transaction. Neo4j
transactional code also runs the statements against the neo4j
transaction class, instead of the neo4j session class.
In a JTA transaction, instead of ignoring calls to
org.neo4j.driver.v1.Transaction.failure(), we could call
setRollbackOnly() on the JTA transaction. So, the existing neo4j code
can influence a JTA rollback. IMO, this would improve our compatibility
with existing neo4j.
In our neo4j XAResource wrapper, we handle commit() by calling neo4j
Transaction.success(). We handle rollback() by calling neo4j
Transaction.failure(). For both cases, we call Transaction.close().
Scott