Re: [bug fix] prepared transaction might be lost when max_prepared_transactions is zero on the subscriber
| От | Chao Li |
|---|---|
| Тема | Re: [bug fix] prepared transaction might be lost when max_prepared_transactions is zero on the subscriber |
| Дата | |
| Msg-id | 0CE4BCB2-5C74-4A4F-88FF-60D8ED2622F9@gmail.com обсуждение исходный текст |
| Ответ на | RE: [bug fix] prepared transaction might be lost when max_prepared_transactions is zero on the subscriber ("Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>) |
| Ответы |
Re: [bug fix] prepared transaction might be lost when max_prepared_transactions is zero on the subscriber
|
| Список | pgsql-hackers |
> On Dec 22, 2025, at 17:01, Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com> wrote: > > Hi, > > When reviewing some parallel apply related codes, I noticed a bug in the > parallel apply worker, similar to the issue discussed in this thread. > > The issue is that the logical replication parallel apply worker may erroneously > advance the origin progress during an error or unsuccessful apply. This can lead > to transaction loss, as these transactions will not be resent by the server. > Commit 3f28b2fc addressed a similar issue in both the apply worker and table > sync worker. > > The original fix involved registering a before_shmem_exit callback to reset the > origin information, preventing the worker from advancing it during transaction > abortion on shutdown. The attached patch registers the same callback for the > parallel apply worker, ensuring consistent behavior across all workers. > > Best Regards, > Hou zj > <v1-0001-Fix-unexpected-origin-advancement-during-parallel.patch> So, ParallelApplyWorkerMain() only calls InitializeLogRepWorker() but SetupApplyOrSyncWorker(), by moving before_shmem_exit()into InitializeLogRepWorker(), ParallelApplyWorkerMain()() gets the exit callback. LGTM. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
В списке pgsql-hackers по дате отправления: