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.94.2) (envelope-from ) id 1tRC4l-007uxP-Pr for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Dec 2024 15:16:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tRC4k-00AuKF-A4 for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Dec 2024 15:16:30 +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.94.2) (envelope-from ) id 1tRC4j-00AuK7-Qi for pgsql-hackers@lists.postgresql.org; Fri, 27 Dec 2024 15:16:29 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tRC4g-001tDo-UF for pgsql-hackers@postgresql.org; Fri, 27 Dec 2024 15:16:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1735312585; bh=sgb/XXH++g2C8SnaA/dcclZW8uLiOn6FoFzCLU30HOI=; h=From:In-Reply-To:References:Date:Cc:To:Message-ID:Subject: User-Agent:From; b=FqsmTUR/smCIj3qmYfTAi9SXHQgG46K8hdOBXtZNao+3J8kbEAY9rzzHhYDgsnNA9 rjpf3cqHyZBhuFvSKO6BZ2N2+v81BBZmgW6U2rjIg57QzLT7H/VWJ7pbOD91JO2Gzl aqau06PFZlUOB5g5oq7q0tH8S5FX+vqzUbbTyqe5lb/zntz7LmGdNJ7Mb9GeNNDH3G wCWGsEOzy8usYNvVGiY3Zz/J8O8ZuYH0R7dVJ+GRAA99XEXClo7Da0MVAGEU7JOaS+ oYrFjwB0wyGva2yipk6MZmb4yC/RmTIbsehbjrL7ftAksrcQ3UDjjcOHNbJwr/f42H 3mTlCHgoWZKsw== Received: from sogo.postgrespro.ru (sogo.l.postgrespro.ru [192.168.2.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) by mail.postgrespro.ru (Postfix/587) with ESMTPS id ED79C608D3; Fri, 27 Dec 2024 18:16:24 +0300 (MSK) From: "Vitaly Davydov" Content-Type: multipart/mixed; boundary="----=_=-_OpenGroupware_org_NGMime-1485445-1735312584.856231-30------" In-Reply-To: X-Forward: 46.39.228.239 References: <13b5b6-676c3080-4d-531db900@47931709> <152dda-676d7200-61-659acf0@102179597> Date: Fri, 27 Dec 2024 18:16:24 +0300 Cc: "pgsql-hackers" To: "Michael Paquier" MIME-Version: 1.0 Message-ID: <16aa85-676ec500-3d-23db9b40@59039559> Subject: =?utf-8?q?Re=3A?= An improvement of ProcessTwoPhaseBuffer logic User-Agent: SOGoMail 5.11.2 X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/12/27 12:45:00 #26922086 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ------=_=-_OpenGroupware_org_NGMime-1485445-1735312584.856231-30------ Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Length: 1148 On Friday, December 27, 2024 10:37 MSK, Michael Paquier wrote: > So please see the attached. You will note that RemoveTwoPhaseFile(), > ProcessTwoPhaseBuffer() and TwoPhaseFilePath() now require a > FullTransactionId, hence callers need to think about the epoch to use= . > That should limit future errors compared to passing the file name as > optional argument. In general, I like your solution to use FullTransactionId. I haven't fo= und any evident problems. I just would like to propose to create a coup= le of new functions like RemoveTwoPhaseFileInCurrentEpoch, TwoPhaseFile= PathInCurrentEpoch which accept TransactionId instead FullTransactionId= . It may make the code clearer and result into less boilerplate code. I= tried to do some hand testing. It seems, the problem is gone with the = patch. Thank you! As an idea, I would like to propose to store FullTransactionId in globa= l transaction state instead of TransactionId. I'm not sure, it will con= sume significant additional memory, but it make the code more clear and= probably result into less number of locks. With best regards, Vitaly ------=_=-_OpenGroupware_org_NGMime-1485445-1735312584.856231-30------ Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Some-cosmetic-fixes.patch" Content-Length: 7129 RnJvbSAxZTc0ZTAxYTI0ODVlMmIzYTU5Zjg4MGE1ZWFmODZhZjFhZjgxY2M1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaXRhbHkgRGF2eWRvdiA8di5kYXZ5ZG92QHBvc3Rn cmVzcHJvLnJ1PgpEYXRlOiBGcmksIDI3IERlYyAyMDI0IDE4OjAzOjI4ICswMzAwClN1Ympl Y3Q6IFtQQVRDSF0gU29tZSBjb3NtZXRpYyBmaXhlcwoKLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS90d29waGFzZS5jIHwgOTIgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKaW5kZXggMDFmNWQ3MjhiZS4u OTQxOGZkNzRlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdv cGhhc2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBA IC0yMjgsNiArMjI4LDcgQEAgc3RhdGljIHZvaWQgTWFya0FzUHJlcGFyaW5nR3V0cyhHbG9i YWxUcmFuc2FjdGlvbiBneGFjdCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCWNvbnN0 IGNoYXIgKmdpZCwgVGltZXN0YW1wVHogcHJlcGFyZWRfYXQsIE9pZCBvd25lciwKIAkJCQkJ CQkJT2lkIGRhdGFiYXNlaWQpOwogc3RhdGljIHZvaWQgUmVtb3ZlVHdvUGhhc2VGaWxlKEZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQsIGJvb2wgZ2l2ZVdhcm5pbmcpOworc3RhdGljIHZvaWQg UmVtb3ZlVHdvUGhhc2VGaWxlSW5DdXJyZW50RXBvY2goVHJhbnNhY3Rpb25JZCB4aWQsIGJv b2wgZ2l2ZVdhcm5pbmcpOwogc3RhdGljIHZvaWQgUmVjcmVhdGVUd29QaGFzZUZpbGUoVHJh bnNhY3Rpb25JZCB4aWQsIHZvaWQgKmNvbnRlbnQsIGludCBsZW4pOwogCiAvKgpAQCAtOTM0 LDYgKzkzNSwyMiBAQCBUd29QaGFzZUZpbGVQYXRoKGNoYXIgKnBhdGgsIEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpCiAJCQkJCVhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChmeGlkKSk7CiB9 CiAKK3N0YXRpYyBpbmxpbmUgaW50CitUd29QaGFzZUZpbGVQYXRoSW5DdXJyZW50RXBvY2go Y2hhciAqcGF0aCwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJdWludDMyCQllcG9jaDsKKwlG dWxsVHJhbnNhY3Rpb25JZCBmeGlkOworCUZ1bGxUcmFuc2FjdGlvbklkIG5leHRGdWxsWGlk OworCisJLyogVXNlIGN1cnJlbnQgZXBvY2ggKi8KKwluZXh0RnVsbFhpZCA9IFJlYWROZXh0 RnVsbFRyYW5zYWN0aW9uSWQoKTsKKwllcG9jaCA9IEVwb2NoRnJvbUZ1bGxUcmFuc2FjdGlv bklkKG5leHRGdWxsWGlkKTsKKworCWZ4aWQgPSBGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9j aEFuZFhpZChlcG9jaCwgeGlkKTsKKworCXJldHVybiBUd29QaGFzZUZpbGVQYXRoKHBhdGgs IGZ4aWQpOworfQorCiAvKgogICogMlBDIHN0YXRlIGZpbGUgZm9ybWF0OgogICoKQEAgLTEy NzksMTYgKzEyOTYsOCBAQCBSZWFkVHdvUGhhc2VGaWxlKFRyYW5zYWN0aW9uSWQgeGlkLCBi b29sIG1pc3Npbmdfb2spCiAJcGdfY3JjMzJjCWNhbGNfY3JjLAogCQkJCWZpbGVfY3JjOwog CWludAkJCXI7Ci0JRnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKLQlGdWxsVHJhbnNhY3Rpb25J ZCBuZXh0RnVsbFhpZDsKLQl1aW50MzIJCWVwb2NoOwotCi0JLyogZ2V0IGN1cnJlbnQgZXBv Y2ggKi8KLQluZXh0RnVsbFhpZCA9IFJlYWROZXh0RnVsbFRyYW5zYWN0aW9uSWQoKTsKLQll cG9jaCA9IEVwb2NoRnJvbUZ1bGxUcmFuc2FjdGlvbklkKG5leHRGdWxsWGlkKTsKIAotCWZ4 aWQgPSBGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhpZChlcG9jaCwgeGlkKTsKLQlU d29QaGFzZUZpbGVQYXRoKHBhdGgsIGZ4aWQpOworCVR3b1BoYXNlRmlsZVBhdGhJbkN1cnJl bnRFcG9jaChwYXRoLCB4aWQpOwogCiAJZmQgPSBPcGVuVHJhbnNpZW50RmlsZShwYXRoLCBP X1JET05MWSB8IFBHX0JJTkFSWSk7CiAJaWYgKGZkIDwgMCkKQEAgLTE2NTYsMTggKzE2NjUs NyBAQCBGaW5pc2hQcmVwYXJlZFRyYW5zYWN0aW9uKGNvbnN0IGNoYXIgKmdpZCwgYm9vbCBp c0NvbW1pdCkKIAkgKiBiZSBmcm9tIHRoZSBjdXJyZW50IGVwb2NoLgogCSAqLwogCWlmIChv bmRpc2spCi0JewotCQl1aW50MzIJCWVwb2NoOwotCQlGdWxsVHJhbnNhY3Rpb25JZCBuZXh0 RnVsbFhpZDsKLQkJRnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKLQotCQkvKiBnZXQgY3VycmVu dCBlcG9jaCAqLwotCQluZXh0RnVsbFhpZCA9IFJlYWROZXh0RnVsbFRyYW5zYWN0aW9uSWQo KTsKLQkJZXBvY2ggPSBFcG9jaEZyb21GdWxsVHJhbnNhY3Rpb25JZChuZXh0RnVsbFhpZCk7 Ci0KLQkJZnhpZCA9IEZ1bGxUcmFuc2FjdGlvbklkRnJvbUVwb2NoQW5kWGlkKGVwb2NoLCB4 aWQpOwotCQlSZW1vdmVUd29QaGFzZUZpbGUoZnhpZCwgdHJ1ZSk7Ci0JfQorCQlSZW1vdmVU d29QaGFzZUZpbGVJbkN1cnJlbnRFcG9jaCh4aWQsIHRydWUpOwogCiAJTXlMb2NrZWRHeGFj dCA9IE5VTEw7CiAKQEAgLTE3MjMsNiArMTcyMSwyMSBAQCBSZW1vdmVUd29QaGFzZUZpbGUo RnVsbFRyYW5zYWN0aW9uSWQgZnhpZCwgYm9vbCBnaXZlV2FybmluZykKIAkJCQkJIGVycm1z ZygiY291bGQgbm90IHJlbW92ZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKSkpOwogfQogCitz dGF0aWMgdm9pZAorUmVtb3ZlVHdvUGhhc2VGaWxlSW5DdXJyZW50RXBvY2goVHJhbnNhY3Rp b25JZCB4aWQsIGJvb2wgZ2l2ZVdhcm5pbmcpCit7CisJdWludDMyCQllcG9jaDsKKwlGdWxs VHJhbnNhY3Rpb25JZCBuZXh0RnVsbFhpZDsKKwlGdWxsVHJhbnNhY3Rpb25JZCBmeGlkOwor CisJLyogZ2V0IGN1cnJlbnQgZXBvY2ggKi8KKwluZXh0RnVsbFhpZCA9IFJlYWROZXh0RnVs bFRyYW5zYWN0aW9uSWQoKTsKKwllcG9jaCA9IEVwb2NoRnJvbUZ1bGxUcmFuc2FjdGlvbklk KG5leHRGdWxsWGlkKTsKKworCWZ4aWQgPSBGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFu ZFhpZChlcG9jaCwgeGlkKTsKKwlSZW1vdmVUd29QaGFzZUZpbGUoZnhpZCwgdHJ1ZSk7Cit9 CisKIC8qCiAgKiBSZWNyZWF0ZXMgYSBzdGF0ZSBmaWxlLiBUaGlzIGlzIHVzZWQgaW4gV0FM IHJlcGxheSBhbmQgZHVyaW5nCiAgKiBjaGVja3BvaW50IGNyZWF0aW9uLgpAQCAtMTczNSwy MSArMTc0OCwxMyBAQCBSZWNyZWF0ZVR3b1BoYXNlRmlsZShUcmFuc2FjdGlvbklkIHhpZCwg dm9pZCAqY29udGVudCwgaW50IGxlbikKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAJcGdf Y3JjMzJjCXN0YXRlZmlsZV9jcmM7CiAJaW50CQkJZmQ7Ci0JRnVsbFRyYW5zYWN0aW9uSWQg ZnhpZDsKLQlGdWxsVHJhbnNhY3Rpb25JZCBuZXh0RnVsbFhpZDsKLQl1aW50MzIJCWVwb2No OwogCiAJLyogUmVjb21wdXRlIENSQyAqLwogCUlOSVRfQ1JDMzJDKHN0YXRlZmlsZV9jcmMp OwogCUNPTVBfQ1JDMzJDKHN0YXRlZmlsZV9jcmMsIGNvbnRlbnQsIGxlbik7CiAJRklOX0NS QzMyQyhzdGF0ZWZpbGVfY3JjKTsKIAotCS8qIFVzZSBjdXJyZW50IGVwb2NoICovCi0JbmV4 dEZ1bGxYaWQgPSBSZWFkTmV4dEZ1bGxUcmFuc2FjdGlvbklkKCk7Ci0JZXBvY2ggPSBFcG9j aEZyb21GdWxsVHJhbnNhY3Rpb25JZChuZXh0RnVsbFhpZCk7Ci0KLQlmeGlkID0gRnVsbFRy YW5zYWN0aW9uSWRGcm9tRXBvY2hBbmRYaWQoZXBvY2gsIHhpZCk7Ci0JVHdvUGhhc2VGaWxl UGF0aChwYXRoLCBmeGlkKTsKKwlUd29QaGFzZUZpbGVQYXRoSW5DdXJyZW50RXBvY2gocGF0 aCwgeGlkKTsKIAogCWZkID0gT3BlblRyYW5zaWVudEZpbGUocGF0aCwKIAkJCQkJCSAgIE9f Q1JFQVQgfCBPX1RSVU5DIHwgT19XUk9OTFkgfCBQR19CSU5BUlkpOwpAQCAtMjI4Niw3ICsy MjkxLDYgQEAgUHJvY2Vzc1R3b1BoYXNlQnVmZmVyKEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQs CiAJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCShlcnJtc2coInJlbW92aW5nIHN0YWxlIHR3 by1waGFzZSBzdGF0ZSBmaWxlIGZvciB0cmFuc2FjdGlvbiAldSIsCiAJCQkJCQkJeGlkKSkp OwotCiAJCQlSZW1vdmVUd29QaGFzZUZpbGUoZnhpZCwgdHJ1ZSk7CiAJCX0KIAkJZWxzZQpA QCAtMjU3MywxNiArMjU3Nyw4IEBAIFByZXBhcmVSZWRvQWRkKGNoYXIgKmJ1ZiwgWExvZ1Jl Y1B0ciBzdGFydF9sc24sCiAJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKHN0YXJ0X2xzbikp CiAJewogCQljaGFyCQlwYXRoW01BWFBHUEFUSF07Ci0JCXVpbnQzMgkJZXBvY2g7Ci0JCUZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQ7Ci0JCUZ1bGxUcmFuc2FjdGlvbklkIG5leHRGdWxsWGlk OwogCi0JCS8qIFVzZSBjdXJyZW50IGVwb2NoICovCi0JCW5leHRGdWxsWGlkID0gUmVhZE5l eHRGdWxsVHJhbnNhY3Rpb25JZCgpOwotCQllcG9jaCA9IEVwb2NoRnJvbUZ1bGxUcmFuc2Fj dGlvbklkKG5leHRGdWxsWGlkKTsKLQotCQlmeGlkID0gRnVsbFRyYW5zYWN0aW9uSWRGcm9t RXBvY2hBbmRYaWQoZXBvY2gsIGhkci0+eGlkKTsKLQkJVHdvUGhhc2VGaWxlUGF0aChwYXRo LCBmeGlkKTsKKwkJVHdvUGhhc2VGaWxlUGF0aEluQ3VycmVudEVwb2NoKHBhdGgsIGhkci0+ eGlkKTsKIAogCQlpZiAoYWNjZXNzKHBhdGgsIEZfT0spID09IDApCiAJCXsKQEAgLTI2Nzcs MjEgKzI2NzMsNyBAQCBQcmVwYXJlUmVkb1JlbW92ZShUcmFuc2FjdGlvbklkIHhpZCwgYm9v bCBnaXZlV2FybmluZykKIAkgKi8KIAllbG9nKERFQlVHMiwgInJlbW92aW5nIDJQQyBkYXRh IGZvciB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CiAJaWYgKGd4YWN0LT5vbmRpc2spCi0Jewot CQl1aW50MzIJCWVwb2NoOwotCQlGdWxsVHJhbnNhY3Rpb25JZCBuZXh0RnVsbFhpZDsKLQkJ RnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKLQotCQkvKgotCQkgKiBXZSBzaG91bGQgZGVhbCB3 aXRoIGEgZmlsZSBhdCB0aGUgY3VycmVudCBlcG9jaCBoZXJlLCBzbwotCQkgKiBncmFiIGl0 LgotCQkgKi8KLQkJbmV4dEZ1bGxYaWQgPSBSZWFkTmV4dEZ1bGxUcmFuc2FjdGlvbklkKCk7 Ci0JCWVwb2NoID0gRXBvY2hGcm9tRnVsbFRyYW5zYWN0aW9uSWQobmV4dEZ1bGxYaWQpOwot CQlmeGlkID0gRnVsbFRyYW5zYWN0aW9uSWRGcm9tRXBvY2hBbmRYaWQoZXBvY2gsIHhpZCk7 Ci0KLQkJUmVtb3ZlVHdvUGhhc2VGaWxlKGZ4aWQsIGdpdmVXYXJuaW5nKTsKLQl9CisJCVJl bW92ZVR3b1BoYXNlRmlsZUluQ3VycmVudEVwb2NoKHhpZCwgZ2l2ZVdhcm5pbmcpOwogCVJl bW92ZUdYYWN0KGd4YWN0KTsKIH0KIAotLSAKMi4zNC4xCgo= ------=_=-_OpenGroupware_org_NGMime-1485445-1735312584.856231-30--------