Re: Fix background workers not restarting with restart_after_crash = on
От | Fujii Masao |
---|---|
Тема | Re: Fix background workers not restarting with restart_after_crash = on |
Дата | |
Msg-id | CAHGQGwFm-yPw3W9QQbOnxOWxpA-zz5jh-_bwUAW3yL5TPpD9HA@mail.gmail.com обсуждение исходный текст |
Список | pgsql-hackers |
On Wed, Jun 11, 2025 at 5:26 PM Andrey Rudometov <unlimitedhikari@gmail.com> wrote: > > Good day, hackers. > > Reading through changes committed in master, I noticed that after > CleanupBackend/CleanupBackroundworker refactor background workers will fail to > start again after postgres' restart with restart_after_crash = on. > > The reason is CleanupBackend and HandleChildCrash not setting background worker's > rw_pid to zero anymore, if backend, well, crashed and failed to call shmem_exit > and mark PMChild slot as inactive via MarkPostmasterChildInactive. > > Suggested solution is to finish CleanupBackend's background worker related logic > even after treating the child process as crashed. In earlier versions zeroing of > pids happen in HandleChildCrash anyway, so there should be no harm in doing > the same actions here. > > For fast reproduction I used pg_prewarm extension, as it creates observable bgworker > and is present in postgres tree, so tap test is easy to run. Thanks for the report and patch! This same issue was also reported in thread [1], where there's ongoing discussion about how to address it. Regards, [1] https://postgr.es/m/tencent_E00A056B3953EE6440F0F40F80EC30427D09@qq.com -- Fujii Masao
В списке pgsql-hackers по дате отправления: