Support #671

If calling server in transaction mode, the callers transaction shall be automatically suspend

Added by Madars about 3 years ago. Updated about 3 years ago.

Status:ClosedStart date:04/20/2021
Priority:Normal (Code 4)Due date:
Assignee:-% Done:


Target version:-


Thus which this change make the setting of TPTRANSUSPEND, in case if flag TPNOTRAN was not present and process is within the global transaction.


#2 Updated by Madars about 3 years ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 100


#3 Updated by Madars about 3 years ago

Release notes

- This logic is enabled automatically for XA switches which supports XA TMJOIN and functionality is not disabled by NDRX_XA_FLAGS (not set to one of the NOJOIN or NOSTARTXID). For these resources global transaction is automatically suspended prior the call. The suspend is done with TMSUSPEND + TMRESUME flags. This means that any open DB cursors can be used after the call.
- Note that previously suspend was done only if flag for tpcall TPTRANSUSPEND was set in the call parameters. Now for corresponding resource managers suspend will be performed automatically. Still the flag TPTRANSUSPEND is left in the place, so that if for some reason forced suspend is required.
- To enable previous logic back (if really required), please set new flag NOSUSPEND in NDRX_XA_FLAGS.
- New flag TPTXTMSUSPEND added to tpsuspend() and tpresume() calls. Which indicates that TMSUSPEND/TMRESUME xa flag pair shall be used for suspend/resume. By default Enduro/X uses TMSUCCESS/TMJOIN (which allows the TPTRANID migration to other process, but breaks any open cursors). New flag TPTXTMSUSPEND would allow to keep cursors open between suspends/resumes but breaks the ability to migrate the TPTRANID to other thread/process.

#4 Updated by Madars about 3 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF