diff --git a/src/gausskernel/process/threadpool/threadpool_worker.cpp b/src/gausskernel/process/threadpool/threadpool_worker.cpp index bb7ab3aa9..5741b2c54 100644 --- a/src/gausskernel/process/threadpool/threadpool_worker.cpp +++ b/src/gausskernel/process/threadpool/threadpool_worker.cpp @@ -185,6 +185,8 @@ void ThreadPoolWorker::WaitMission() * before we serve next session we must keep us clean. */ PreventSignal(); + + MemoryContext old = CurrentMemoryContext; while (true) { /* we should keep the thread clean for next Session. */ CleanThread(); @@ -222,7 +224,7 @@ void ThreadPoolWorker::WaitMission() break; } } - + MemoryContextSwitchTo(old); (void)disable_session_sig_alarm(); /* now we can accept signal. out of this, we rely on signal handle. */ AllowSignal();