mirror of
https://github.com/postgres/postgres.git
synced 2025-06-22 02:52:08 +03:00
Avoid sending prepare multiple times while decoding.
We send the prepare for the concurrently aborted xacts so that later when rollback prepared is decoded and sent, the downstream should be able to rollback such a xact. For 'streaming' case (when we send changes for in-progress transactions), we were sending prepare twice when concurrent abort was detected. Author: Peter Smith Reviewed-by: Amit Kapila Discussion: https://postgr.es/m/f82133c6-6055-b400-7922-97dae9f2b50b@enterprisedb.com
This commit is contained in:
@ -2690,8 +2690,11 @@ ReorderBufferPrepare(ReorderBuffer *rb, TransactionId xid,
|
||||
* We send the prepare for the concurrently aborted xacts so that later
|
||||
* when rollback prepared is decoded and sent, the downstream should be
|
||||
* able to rollback such a xact. See comments atop DecodePrepare.
|
||||
*
|
||||
* Note, for the concurrent_abort + streaming case a stream_prepare was
|
||||
* already sent within the ReorderBufferReplay call above.
|
||||
*/
|
||||
if (txn->concurrent_abort)
|
||||
if (txn->concurrent_abort && !rbtxn_is_streamed(txn))
|
||||
rb->prepare(rb, txn, txn->final_lsn);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user