From 9144987b609767e6fec75aff5dfb64d797a8ed52 Mon Sep 17 00:00:00 2001 From: Jingtang Zhang Date: Tue, 26 Aug 2025 11:54:29 +0800 Subject: [PATCH] Fix SMgrRelation object memory leak during startup redo --- src/backend/access/transam/xlog.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 7ffb2179151..7817255616f 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -8385,6 +8385,14 @@ xlog_redo(XLogReaderState *record) checkPoint.ThisTimeLineID, replayTLI))); RecoveryRestartPoint(&checkPoint, record); + + /* + * After any checkpoint, free all smgr objects. Otherwise we + * would never do so for dropped relations, as the startup does + * not process shared invalidation messages or call + * AtEOXact_SMgr(). + */ + smgrdestroyall(); } else if (info == XLOG_CHECKPOINT_ONLINE) { @@ -8438,6 +8446,14 @@ xlog_redo(XLogReaderState *record) checkPoint.ThisTimeLineID, replayTLI))); RecoveryRestartPoint(&checkPoint, record); + + /* + * After any checkpoint, free all smgr objects. Otherwise we + * would never do so for dropped relations, as the startup does + * not process shared invalidation messages or call + * AtEOXact_SMgr(). + */ + smgrdestroyall(); } else if (info == XLOG_OVERWRITE_CONTRECORD) { -- 2.39.5 (Apple Git-154)