Re: [bug fix] prepared transaction might be lost when max_prepared_transactions is zero on the subscriber
От | Amit Kapila |
---|---|
Тема | Re: [bug fix] prepared transaction might be lost when max_prepared_transactions is zero on the subscriber |
Дата | |
Msg-id | CAA4eK1J8j33OrTVGRgpw9eGYsFyyT=XyLJ2eC4DpzsoggYKTDg@mail.gmail.com обсуждение исходный текст |
Ответ на | [bug fix] prepared transaction might be lost when max_prepared_transactions is zero on the subscriber ("Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>) |
Ответы |
Re: [bug fix] prepared transaction might be lost when max_prepared_transactions is zero on the subscriber
RE: [bug fix] prepared transaction might be lost when max_prepared_transactions is zero on the subscriber |
Список | pgsql-hackers |
On Thu, Aug 8, 2024 at 10:37 AM Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com> wrote: > ... > > An easiest fix is to reset session replication origin before calling the > RecordTransactionAbort(). I think this can happen when 1) LogicalRepApplyLoop() > raises an ERROR or 2) apply worker exits. Attached patch can fix the issue on HEAD. > Few comments: ============= * @@ -4409,6 +4409,14 @@ start_apply(XLogRecPtr origin_startpos) } PG_CATCH(); { + /* + * Reset the origin data to prevent the advancement of origin progress + * if the transaction failed to apply. + */ + replorigin_session_origin = InvalidRepOriginId; + replorigin_session_origin_lsn = InvalidXLogRecPtr; + replorigin_session_origin_timestamp = 0; Can't we call replorigin_reset() instead here? * + /* + * Register a callback to reset the origin state before aborting the + * transaction in ShutdownPostgres(). This is to prevent the advancement + * of origin progress if the transaction failed to apply. + */ + before_shmem_exit(replorigin_reset, (Datum) 0); I think we need this despite resetting the origin-related variables in PG_CATCH block to handle FATAL error cases, right? If so, can we use PG_ENSURE_ERROR_CLEANUP() instead of PG_CATCH()? -- With Regards, Amit Kapila.
В списке pgsql-hackers по дате отправления: