If the transaction has already been committed (by another thread, for example) then we do nothing - could throw TransactionRequired or INVALID_TRANSACTION. However, if it was rolledback then we throw TRANSACTION_ROLLEDBACK. Seems like an inconsistency. report_heuristics is ignored if we are a subtransaction.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.