From e31113115704de00b27b9280a81750e77451a5a0 Mon Sep 17 00:00:00 2001 From: chenxiaobin <1025221611@qq.com> Date: Mon, 15 Mar 2021 21:41:58 +0800 Subject: [PATCH] let heartbeat thread shut down while closing checkpointer thread --- src/gausskernel/process/postmaster/postmaster.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gausskernel/process/postmaster/postmaster.cpp b/src/gausskernel/process/postmaster/postmaster.cpp index 76d1e0a05..7347fffe9 100755 --- a/src/gausskernel/process/postmaster/postmaster.cpp +++ b/src/gausskernel/process/postmaster/postmaster.cpp @@ -4344,9 +4344,6 @@ static void pmdie(SIGNAL_ARGS) if (g_instance.pid_cxt.DataReceiverPID != 0) signal_child(g_instance.pid_cxt.DataReceiverPID, SIGTERM); - if (g_instance.pid_cxt.HeartbeatPID != 0) - signal_child(g_instance.pid_cxt.HeartbeatPID, SIGTERM); - if (g_instance.pid_cxt.FaultMonitorPID != 0) signal_child(g_instance.pid_cxt.FaultMonitorPID, SIGTERM); @@ -5211,6 +5208,9 @@ static void reaper(SIGNAL_ARGS) */ SignalChildren(SIGUSR2); + if (g_instance.pid_cxt.HeartbeatPID != 0) + signal_child(g_instance.pid_cxt.HeartbeatPID, SIGTERM); + pmState = PM_SHUTDOWN_2; /* @@ -6042,9 +6042,8 @@ static void PostmasterStateMachine(void) g_instance.pid_cxt.WLMArbiterPID == 0 && g_instance.pid_cxt.CPMonitorPID == 0 && g_instance.pid_cxt.PgJobSchdPID == 0 && g_instance.pid_cxt.CBMWriterPID == 0 && g_instance.pid_cxt.SnapshotPID == 0 && g_instance.pid_cxt.PercentilePID == 0 && - g_instance.pid_cxt.RemoteServicePID == 0 && g_instance.pid_cxt.HeartbeatPID == 0 && - g_instance.pid_cxt.AshPID == 0 && g_instance.pid_cxt.CsnminSyncPID == 0 && - g_instance.pid_cxt.BarrierCreatorPID == 0 && + g_instance.pid_cxt.RemoteServicePID == 0 && g_instance.pid_cxt.AshPID == 0 && + g_instance.pid_cxt.CsnminSyncPID == 0 && g_instance.pid_cxt.BarrierCreatorPID == 0 && #ifdef ENABLE_MULTIPLE_NODES g_instance.pid_cxt.CommPoolerCleanPID == 0 && streaming_backend_manager(STREAMING_BACKEND_SHUTDOWN) && @@ -6141,7 +6140,8 @@ static void PostmasterStateMachine(void) */ if (g_instance.pid_cxt.PgArchPID == 0 && CountChildren(BACKEND_TYPE_ALL) == 0 && g_instance.pid_cxt.WalReceiverPID == 0 && g_instance.pid_cxt.WalRcvWriterPID == 0 && - g_instance.pid_cxt.DataReceiverPID == 0 && g_instance.pid_cxt.DataRcvWriterPID == 0) { + g_instance.pid_cxt.DataReceiverPID == 0 && g_instance.pid_cxt.DataRcvWriterPID == 0 && + g_instance.pid_cxt.HeartbeatPID == 0) { pmState = PM_WAIT_DEAD_END; } }