

If a transaction is active then it is suspended, and resumed after the task is run. If no transaction is active then these semantics are basically a no-op.

QuarkusTransaction.suspendingExisting()/ SUSPEND_EXISTING Otherwise, a new transaction is started, and follows all the normal lifecycle rules. Then a new transaction is started which follows all the normal lifecycle rules,Īnd when it’s complete the original transaction is resumed. If an existing transaction is already associated with the current thread then the transaction is suspended, QuarkusTransaction.requiringNew()/ REQUIRE_NEW If anĮxception is thrown the exception handler will be called, howeverĪ result of ExceptionResult#ROLLBACK will result in the TX marked as rollback only, while a result ofĮxceptionResult#COMMIT will result in no action being taken. If an existing transaction is active then the method is run in the context of the existing transaction. If an exception is thrown the exception handler registered by #exceptionHandler(Function) will be called toĭecide if the TX should be committed or rolled back. If no transaction is active then a new transaction will be started, and committed when the method ends. QuarkusTransaction.joiningExisting()/ JOIN_EXISTING Otherwise a new transaction is started, and follows all the normal lifecycle rules. If a transaction is already associated with the current thread a QuarkusTransactionException will be thrown,
