From 3c621ff09ead105fe0cdf29171b0eac18033bd0c Mon Sep 17 00:00:00 2001 From: cyb Date: Wed, 8 Jun 2022 00:35:19 +0800 Subject: [PATCH] solve the switchover problem of pagewriter exiting --- src/gausskernel/process/postmaster/pagewriter.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gausskernel/process/postmaster/pagewriter.cpp b/src/gausskernel/process/postmaster/pagewriter.cpp index c49d7a335..7eb6b95b1 100755 --- a/src/gausskernel/process/postmaster/pagewriter.cpp +++ b/src/gausskernel/process/postmaster/pagewriter.cpp @@ -1069,8 +1069,8 @@ void dw_upgrade_batch() knl_g_dw_context* dw_batch_cxt = &g_instance.dw_batch_cxt; dw_batch_file_context* dw_file_cxt = &dw_batch_cxt->batch_file_cxts[0]; - (void)LWLockConditionalAcquire(dw_batch_cxt->flush_lock, LW_EXCLUSIVE); - (void)LWLockConditionalAcquire(dw_file_cxt->flush_lock, LW_EXCLUSIVE); + (void)LWLockAcquire(dw_batch_cxt->flush_lock, LW_EXCLUSIVE); + (void)LWLockAcquire(dw_file_cxt->flush_lock, LW_EXCLUSIVE); wait_all_dw_page_finish_flush(); @@ -1651,6 +1651,9 @@ void ckpt_pagewriter_main(void) pgstat_report_activity(STATE_IDLE, NULL); if (t_thrd.pagewriter_cxt.pagewriter_id == 0) { + g_instance.ckpt_cxt_ctl->page_writer_sub_can_exit = false; + pg_write_barrier(); + g_instance.proc_base->pgwrMainThreadLatch = &t_thrd.proc->procLatch; g_instance.ckpt_cxt_ctl->incre_ckpt_sync_shmem->pagewritermain_pid = t_thrd.proc_cxt.MyProcPid; InitSync();