If calling server in transaction mode, the callers transaction shall be automatically suspend
|Priority:||Normal (Code 4)||Due date:|
Thus which this change make the setting of TPTRANSUSPEND, in case if flag TPNOTRAN was not present and process is within the global transaction.
#3 Updated by Madars over 2 years ago
- 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.