From 6dc2d139d55921754b19f147178ae434e3f5640b Mon Sep 17 00:00:00 2001 From: openGaussDev Date: Mon, 7 Mar 2022 18:18:49 +0800 Subject: [PATCH] Global SysCache MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Offering: openGaussDev More detail: 修复线程池模式waitmission起事务后内存上下文不正确导致内存泄漏问题 Match-id-18f61b45531eaa886b7b7cf2bce9bf6c97a901fb --- src/gausskernel/process/threadpool/threadpool_worker.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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();