Re: [HACKERS] logical decoding of two-phase transactions
От | Ajin Cherian |
---|---|
Тема | Re: [HACKERS] logical decoding of two-phase transactions |
Дата | |
Msg-id | CAFPTHDYLK+L4DHDpW3nOzpbJqhHsM2wSpCOyPqGMPUB4_qFFYA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] logical decoding of two-phase transactions (Dilip Kumar <dilipbalaut@gmail.com>) |
Ответы |
Re: [HACKERS] logical decoding of two-phase transactions
|
Список | pgsql-hackers |
On Sun, Sep 20, 2020 at 3:31 PM Dilip Kumar <dilipbalaut@gmail.com> wrote: > + /* > + * If it's ROLLBACK PREPARED then handle it via callbacks. > + */ > + if (TransactionIdIsValid(xid) && > + !SnapBuildXactNeedsSkip(ctx->snapshot_builder, buf->origptr) && > + parsed->dbId == ctx->slot->data.database && > + !FilterByOrigin(ctx, origin_id) && > + ReorderBufferTxnIsPrepared(ctx->reorder, xid, parsed->twophase_gid)) > + { > + ReorderBufferFinishPrepared(ctx->reorder, xid, buf->origptr, buf->endptr, > + commit_time, origin_id, origin_lsn, > + parsed->twophase_gid, false); > + return; > + } > > > I think we have already checked !SnapBuildXactNeedsSkip, parsed->dbId > == ctx->slot->data.database and !FilterByOrigin in DecodePrepare > so if those are not true then we wouldn't have prepared this > transaction i.e. ReorderBufferTxnIsPrepared will be false so why do we > need > to recheck this conditions. We could enter DecodeAbort even without a prepare, as the code is common for both XLOG_XACT_ABORT and XLOG_XACT_ABORT_PREPARED. So, the conditions !SnapBuildXactNeedsSkip, parsed->dbId > == ctx->slot->data.database and !FilterByOrigin could be true but the transaction is not prepared, then we dont need todo a ReorderBufferFinishPrepared (with commit flag false) but called ReorderBufferAbort. But I think there is a problem,if those conditions are in fact false, then we should return without trying to Abort using ReorderBufferAbort, whatdo you think? I agree with all your other comments. regards, Ajin Fujitsu Australia
В списке pgsql-hackers по дате отправления: