Bug #734

Transaction Processing: Read only committed transaction can corrupt the commit flow

Added by Madars over 2 years ago. Updated over 2 years ago.

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

100%

Category:-
Target version:-

Description

N:NDRX:5:7854be8b:32025:7f4bbdb4c300:006:20211018:114641735938:repare_entry:tmi/xa.c:0803:atmi_xa_prepare_entry
N:NDRX:5:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736601:repare_entry:tmi/xa.c:0817:xa_prepare_entry - fail: 3 [the transaction branch was read-only and has been committed]
N:NDRX:5:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736624:rror_fmt_rsn:perror.c:0404:ndrx_TPset_error_fmt_rsn: 16 (TPERMERR) reason: 3 [xa_prepare_entry - fail: 3 [the transaction branch was read-only and has been committed]]
N:NDRX:5:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736642:repare_local:/local.c:0087:Failed to prepare local transaction btid=0!
N:NDRX:4:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736653:tm_drive    :atedrv.c:0204:Operation tperrno: 16, xa return code: 3
N:NDRX:4:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736669:tm_drive    :atedrv.c:0306:Voting to leave group for 50!
N:NDRX:5:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736676:ms_log_stage:rv/log.c:1277:tms_log_stage: new stage - 50 (cc 0)
N:NDRX:4:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736685:tm_drive    :atedrv.c:0127:Entered in stage: COMMITTING
N:NDRX:4:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736690:tm_drive    :atedrv.c:0146:RMID: 1 status r
N:NDRX:4:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736695:tm_drive    :atedrv.c:0154:OP_NOP
N:NDRX:4:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736699:tm_drive    :atedrv.c:0204:Operation tperrno: 0, xa return code: 0
N:NDRX:4:7854be8b:32025:7f4bbdb4c300:006:20211018:114641736704:tm_drive    :atedrv.c:0232:No stage info for 50/r - i

Makes a vote / staging to committed for whole group (i.e. prepare/commit not performed for other branches).

History

#1 Updated by Lauris over 2 years ago

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

Release notes

When processing global transactions with several resource managers involved, and if first resource manager would return XA_RDONLY, the whole transaction would step to commit phase, instead of performing prepare for second resource manager. This could lead to data corruption.

The issue has been fixed, so that two-phase commit engine would properly prepare the other resource managers in case if some manager returns XA_RDONLY
.

Available from Enduro/X version 7.5.34+.

#2 Updated by Lauris over 2 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF