On 2021/03/23 9:05, Masahiro Ikeda wrote:
Yes. I attached the v5 patch based on v3 patch. I renamed SignalHandlerForUnsafeExit() and fixed the following comment.
Thanks for updating the patch! When the startup process exits because of recovery_target_action=shutdown, reaper() calls TerminateChildren(SIGTERM). This function sends SIGTERM to the stats collector. Currently the stats collector ignores SIGTERM, but with the patch it exits normally. This change of behavior might be problematic. That is, TerminateChildren(SIGTERM) sends SIGTERM to various processes. But currently the stats collector and checkpointer don't exit even when SIGTERM arrives because they ignore SIGTERM. After several processes other than the stats collector and checkpointer exit by SIGTERM, PostmasterStateMachine() and reaper() make checkpointer exit and then the stats collector exit. The shutdown terminates the processes in this order. On the other hand, with the patch, the stats collector exits by SIGTERM before checkpointer exits. This is not normal order of processes to exit in shutdown. To address this issue, one idea is to use SIGUSR2 for normal exit of the stats collector, instead of SIGTERM. If we do this, TerminateChildren(SIGTERM) cannot terminate the stats collector. Thought? If we adopt this idea, the detail comment about why SIGUSR2 is used for that needs to be added. Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION