Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSn0G-00068x-0O for pgsql-hackers@arkaria.postgresql.org; Fri, 29 May 2026 02:31:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wSn0E-0016Mg-27 for pgsql-hackers@arkaria.postgresql.org; Fri, 29 May 2026 02:31:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSn0E-0016MX-0n for pgsql-hackers@lists.postgresql.org; Fri, 29 May 2026 02:31:14 +0000 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wSn0C-0000000048K-0UPP for pgsql-hackers@lists.postgresql.org; Fri, 29 May 2026 02:31:14 +0000 Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-68c08bfe5afso383405a12.2 for ; Thu, 28 May 2026 19:31:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780021871; cv=none; d=google.com; s=arc-20240605; b=VJkc5Hptc4hiD0UTwnwVYYnqmwuHQ/fIX3wT3Snakv21Z/dcg+FjcLUi2KyGrRmoVn qdMAjwfcpIKvsUwri1YjOmUnP9CRM4wyELC8dsDXn/VC0++z0Dg/BPy0qclbM4s8TdTu T0MPwIE934vnryJBKMCMCbBPzNPGrlKKgI0lpIWUjM51p6BHNFeubLjDd+nIpFLxablI 3AahW1NuJNFILmw7fTmfKmv6BNPrbI1nxIdNGZhQZL3qZgxfOlXZvHtVgvoIT2R1LBD9 q+SxICMB6uPVJtG2SUWoq6URmHAsyufR7FMg/f3OCduAgX3JYBOgXFAyUI0rkSfrcYnP YQ8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=adxyd5hi8lfDa2ovaVABgfsiHQyfcyL6kzPNSfSTxoQ=; fh=JXLb311XxHXSeZIFYoFLaJ0sLFMgMF6Oi68SrfQI5tU=; b=hnuVHgZ36nLyZA0Im86IeQzuBcWBxHIXLRpwywDf2Cs/m85vSMZqJsUND957UPgoYl eahwXgTY3N1LuGoqYjJw49XPlPMhfHFbqC7nBAh9tLyu+yFCEM1RGCNCdBDDyoPuCTHE HCFX9hcgeH0A0cTuDsRt5zDSKI5R5sZe1WqiaSYNb9YDo3+QgED0CAOAsBCJ8QIvROs4 IIPnVUHjde6PN9oN//g8S24rez26+5cJeNeEdJ3WcsxmXukjPVB93rFcuHiLz8yoUpeI e1lq40Y6jOLrdGUozSO1ffN8yB9nhFaNnOa/MS8AbSNkVlJkOFND5FaZRzR20983fJti WKUA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780021871; x=1780626671; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=adxyd5hi8lfDa2ovaVABgfsiHQyfcyL6kzPNSfSTxoQ=; b=JKXXMwvknpi1PvhhB22l50/1BNqYoisdYWY70YCfsL9xrYeR0s4cjxdcyZg3YRcSv1 argYaAX/QUXKE6n5DwMXIO/viGt9hllUdxfhokB3lOd/WUUSDbzL41foMxIm9suC05w2 kv5IwtvNovnRW6U7jk4MD6uK3YzQBXafx2a4muVaWftpnxPyOyHwr2tlozAEJsIvwxoB TKv6YwVhToiYjTVSOXEDZLZdsVcZ4KoTsYPTGRVvPHIWD1XwecYI46ohqBdniLi4UqSb 3nhoxoomyJTG0LcIv9A+BKMN73H3J2izY7VHPHiaN9ztKr6qYwxuxkwJE/3RWGkl59XZ EGpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780021871; x=1780626671; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=adxyd5hi8lfDa2ovaVABgfsiHQyfcyL6kzPNSfSTxoQ=; b=WMGPdwewOsX6lVuE7NDTjzg60vMblZem/bTnZxetv7aGMYx7KhlUvpsjCgKXHyoCoq FUkh6L3BrxADtS9AcciVGbzFOTL3HbzFjbuCbSWrbbMdbDvRACGuewVgAWNO5aCZSTDI GCV1dLJJi2r2jfH67Wzvten7AvCIe9ErBhafUcrbHA5rml6s9sLwzSj769BM8EFh5la3 q0B1GaHg0hvPhNpWj8IOYLLV17jInkTi6BaAqSPnyYd8UjfM+gRL/TQTFfpvpb5jbc17 2F2hm8xXx0CU11/XxomQk85iDZWHaJQvnLpCr54aFuoQ3NQBfsZGEds521+euyqc2N6N rXZQ== X-Forwarded-Encrypted: i=1; AFNElJ+1hVQtcpjWmSYCSt8ZnxoJ0xfY3/OOzP/LfoLiEztWdWx+URs2mgjAmpDCtPUkI6tR+eFsFR4lQAubrdxL@lists.postgresql.org X-Gm-Message-State: AOJu0Yw1D/opieq3XCFmihyw+2jJ3459RNF3oaGu8O5aHrXKZG3JfSRW OhbBQn9/uyRDcmavfah1z3N4RmT4tOYLKtVIAlw0WbkKfvtFpFYFLxDSl6xozcbTC1XvpFMRkSR ehftD/lo8V/aoQegMtpSUPWTdzN2/F6k= X-Gm-Gg: Acq92OEE99ctl+un761WR0WJ7+abr/uCQuW8J17ZXYD/myugn0jlTEltmBpvUIvn8/F VpMBw0A4Udn1O6IFknHEAteiZGwfr5NIQs7qpwniCXz1REbg5iovLoKHU9zX0rBBLLOyrpLWmur hSwGHCV0RaIB8AWooI9SvFsCuuP32VLYbmAIaJ5SvLugWAHzfYMmvD12quOIptHItIGPobSRvF7 y9XwRtQNmGBJq9TzPOc3xo7geNr6oqnvsMyXqiploJqsQF3cotPhDRrB+S3G9iMx9Cs7fU7eG5S bBumkSkH4iiEkU0vkis3eSFSMaDrg5gmIwqFnitOzRZD5PVneb1qRiU/FQIAL7PiEyXIz+umIPS fDhtwZ46Pp1swNITne5UOptxzqQdxpxlaPZm2rmN+14RxOgpM X-Received: by 2002:a17:906:9fc8:b0:bde:170:a0ef with SMTP id a640c23a62f3a-be9cbcc47b6mr32359666b.27.1780021870782; Thu, 28 May 2026 19:31:10 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Xuneng Zhou Date: Fri, 29 May 2026 10:30:57 +0800 X-Gm-Features: AVHnY4Kv14n_YSNhtu-NCKaAv9PWL_1s0HriLDaI9C_1_qQS8HgzuGu2VYGGLQs Message-ID: Subject: Re: Bound memory usage during manual slot sync retries To: Khoa Nguyen Cc: Amit Kapila , pgsql-hackers , "itsajin@gmail.com" , "Zhijie Hou (Fujitsu)" Content-Type: multipart/mixed; boundary="0000000000004d289d0652eba372" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004d289d0652eba372 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Khoa, On Fri, May 29, 2026 at 12:43=E2=80=AFAM Khoa Nguyen wrote: > > On Tue, May 26, 2026 at 4:39=E2=80=AFPM Amit Kapila wrote: > > > > On Tue, May 26, 2026 at 1:01=E2=80=AFPM Xuneng Zhou wrote: > > > > > > > > >> On Mon, May 25, 2026 at 7:03=E2=80=AFPM Amit Kapila wrote: > > >> > > > >> > Okay, then let's go with a per-retry memory context approach. > > >> > > > >> > @@ -579,6 +579,8 @@ drop_local_obsolete_slots(List *remote_slot_li= st) > > >> > local_slot->data.database)); > > >> > } > > >> > } > > >> > + > > >> > + list_free(local_slots); > > >> > } > > >> > > > >> > Why do we need this retail pfree if the caller is using memory con= text? > > >> > > > >> > > >> I see that the latest patch in email [1] has already addressed this > > >> point. So, I'll push the v2 version. > > >> > > >> [1] - https://www.postgresql.org/message-id/CABPTF7WB4Z62sPoZkhSygOC= Ao3OiTDLpMELxZDuwCb3HYgM_pQ%40mail.gmail.com > > > > > > > > > Thanks. My original reasoning for adding the pfree here was to act as= a safety guard in case other future callers might not manage the memory pr= operly. But Zhijie pointed out that this double-free pattern is not favored= in previous community discussions. I'll post the worst-case test and its = results later. > > > > > > > Pushed. > > > This patch is already pushed by Amit but I wanted to add my review > from a validation standpoint. I was able to use the > measure_slotsync_memory.sh to verify the leak that Xuneng reported. > pre-patch > timestamp,backend_pid,total_bytes,delta_bytes > 2026-05-27T16:52:20Z,78800,1339920, > 2026-05-27T16:52:22Z,78800,1405456,65536 > 2026-05-27T16:52:24Z,78800,1405456,0 > 2026-05-27T16:52:26Z,78800,1405456,0 > 2026-05-27T16:52:28Z,78800,1536528,131072 > 2026-05-27T16:52:30Z,78800,1536528,0 > 2026-05-27T16:52:32Z,78800,1536528,0 > > patched > timestamp,backend_pid,total_bytes,delta_bytes > 2026-05-27T01:17:50Z,66917,1315344, > 2026-05-27T01:17:52Z,66917,1315344,0 > 2026-05-27T01:17:54Z,66917,1315344,0 > 2026-05-27T01:17:56Z,66917,1315344,0 > 2026-05-27T01:17:58Z,66917,1315344,0 > 2026-05-27T01:18:00Z,66917,1315344,0 > 2026-05-27T01:18:02Z,66917,1315344,0 > > I also reviewed the script and it is well done. The script setup and > capture data points showing memory leak within the session over time. > The patch looks fine though I think that oldctx should be captured > once outside the retry loop since the current logic is more about > parent and child memory context rather than previous and current > context. Nevertheless, the current code works as well. Thanks for your review and verification. I agree with your suggestion that capturing the outer memory context once outside the retry loop looks cleaner and reflect the lifetime model better. I am also wondering whether renaming the oldctx to outerctx could express the parent/child relationship more clearly. That said, I am ok with the status quo, if Amit thinks no further modification is needed. --=20 Regards, Xuneng Zhou HighGo Software Co., Ltd. --0000000000004d289d0652eba372 Content-Type: application/octet-stream; name="v1-0001-Use-outer-memory-context-across-slot-sync-retries.patch" Content-Disposition: attachment; filename="v1-0001-Use-outer-memory-context-across-slot-sync-retries.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpqb13q50 RnJvbSBhYTk5ZDAxN2IwNGFmNTg2ZDc0ZmFmYzY3NjU2Mjg5Zjg1NjMzYTg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog RnJpLCAyOSBNYXkgMjAyNiAxMDoyODo1NyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjFdIFVzZSBv dXRlciBtZW1vcnkgY29udGV4dCBhY3Jvc3Mgc2xvdCBzeW5jIHJldHJpZXMKCkNhcHR1cmUgdGhl IG91dGVyIG1lbW9yeSBjb250ZXh0IG9uY2UgYmVmb3JlIHRoZSByZXRyeSBsb29wIGluClN5bmNS ZXBsaWNhdGlvblNsb3RzKCkgdG8gYmV0dGVyIGJldHRlciBtYXRjaGVzIHRoZSBhY3R1YWwgbGlm ZXRpbWUgbW9kZWw6CnN5bmNfcmV0cnlfY3R4IGlzIHRoZSBwZXItY3ljbGUgY2hpbGQgY29udGV4 dCwgd2hpbGUgc2xvdF9uYW1lcyBtdXN0IGxpdmUKaW4gdGhlIHBhcmVudC9vdXRlciBjb250ZXh0 IGFjcm9zcyByZXNldHMuIFJlbmFtZSB0aGUgb2xkY3R4IHRvIG91dGVyY3R4CnRvIGV4cHJlc3Mg dGhlIHBhcmVudC9jaGlsZCByZWxhdGlvbnNoaXAgbW9yZSBjbGVhcmx5LgotLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyB8IDEwICsrKysrKy0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDkzZjQxYmUzMmFmLi5lMjIxNTVi NzE5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3lu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAt MjAxNCwxNyArMjAxNCwyMCBAQCBTeW5jUmVwbGljYXRpb25TbG90cyhXYWxSZWNlaXZlckNvbm4g KndyY29ubikKIAkJTGlzdAkgICAqcmVtb3RlX3Nsb3RzID0gTklMOwogCQlMaXN0CSAgICpzbG90 X25hbWVzID0gTklMOwkvKiBMaXN0IG9mIHNsb3QgbmFtZXMgdG8gdHJhY2sgKi8KIAkJTWVtb3J5 Q29udGV4dCBzeW5jX3JldHJ5X2N0eDsKKwkJTWVtb3J5Q29udGV4dCBvdXRlcmN0eDsKIAogCQlj aGVja19hbmRfc2V0X3N5bmNfaW5mbyhNeVByb2NQaWQpOwogCiAJCXZhbGlkYXRlX3JlbW90ZV9p bmZvKHdyY29ubik7CiAKKwkJb3V0ZXJjdHggPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwogCQkv KgogCQkgKiBTZXR1cCBhbmQgdXNlIGEgcGVyLXN5bmMtY3ljbGUgbWVtb3J5IGNvbnRleHQsIHdo aWNoIGlzIHJlc2V0IGV2ZXJ5CiAJCSAqIHRpbWUgd2UgbG9vcCBiZWxvdy4gVGhpcyBhdm9pZHMg aGF2aW5nIHRvIHJldGFpbCBmcmVlaW5nIHRoZSBtZW1vcnkKIAkJICogdXNlZCBpbiBlYWNoIHN5 bmMgY3ljbGUuCiAJCSAqLwotCQlzeW5jX3JldHJ5X2N0eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0 ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJc3luY19yZXRyeV9jdHggPSBBbGxvY1NldENvbnRl eHRDcmVhdGUob3V0ZXJjdHgsCiAJCQkJCQkJCQkJCSAgICJzbG90IHN5bmMgcmV0cnkgY29udGV4 dCIsCiAJCQkJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCkBAIC0yMDMzLDcg KzIwMzYsNiBAQCBTeW5jUmVwbGljYXRpb25TbG90cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikK IAkJewogCQkJYm9vbAkJc2xvdF9wZXJzaXN0ZW5jZV9wZW5kaW5nID0gZmFsc2U7CiAJCQlib29s CQlzb21lX3Nsb3RfdXBkYXRlZCA9IGZhbHNlOwotCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAK IAkJCS8qIENoZWNrIGZvciBpbnRlcnJ1cHRzIGFuZCBjb25maWcgY2hhbmdlcyAqLwogCQkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKQEAgLTIwNDUsNyArMjA0Nyw3IEBAIFN5bmNSZXBsaWNhdGlv blNsb3RzKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKQogCQkJQXNzZXJ0KElzVHJhbnNhY3Rpb25T dGF0ZSgpKTsKIAogCQkJTWVtb3J5Q29udGV4dFJlc2V0KHN5bmNfcmV0cnlfY3R4KTsKLQkJCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzeW5jX3JldHJ5X2N0eCk7CisJCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8oc3luY19yZXRyeV9jdHgpOwogCiAJCQkvKgogCQkJICogRmV0Y2ggcmVt b3RlIHNsb3QgaW5mbyBmb3IgdGhlIGdpdmVuIHNsb3RfbmFtZXMuIElmIHNsb3RfbmFtZXMKQEAg LTIwNjcsNyArMjA2OSw3IEBAIFN5bmNSZXBsaWNhdGlvblNsb3RzKFdhbFJlY2VpdmVyQ29ubiAq d3Jjb25uKQogCQkJICogc2xvdF9uYW1lcyBtdXN0IHN1cnZpdmUgbGF0ZXIgc3luY19yZXRyeV9j dHggcmVzZXRzLCBzbyBjb3B5IGl0CiAJCQkgKiBpbiB0aGUgb3V0ZXIgY29udGV4dC4KIAkJCSAq LwotCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob3V0ZXJjdHgpOwogCiAJCQkvKgogCQkJICogSWYgc2xvdF9wZXJzaXN0ZW5jZV9wZW5k aW5nIGlzIHRydWUsIGV4dHJhY3Qgc2xvdCBuYW1lcyBmb3IKLS0gCjIuNTEuMAoK --0000000000004d289d0652eba372--