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 1r43o0-007CEO-8c for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Nov 2023 18:43:04 +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 1r43ny-00F9Mo-Ps for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Nov 2023 18:43:02 +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 1r43ny-00F9MM-Cf for pgsql-hackers@lists.postgresql.org; Fri, 17 Nov 2023 18:43:02 +0000 Received: from mail-il1-x131.google.com ([2607:f8b0:4864:20::131]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r43nu-006wcl-FF for pgsql-hackers@postgresql.org; Fri, 17 Nov 2023 18:43:01 +0000 Received: by mail-il1-x131.google.com with SMTP id e9e14a558f8ab-359974f4c7eso8516435ab.1 for ; Fri, 17 Nov 2023 10:42:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1700246575; x=1700851375; darn=postgresql.org; h=mime-version:user-agent:date:to:from:subject:message-id:from:to:cc :subject:date:message-id:reply-to; bh=6X+F8YShLQtE8avud/u84BIAqUGk67a6WEZGVWhBZxI=; b=kH5HnKbBwL1ILLhNa1RpLbAgSg/8ey/1E6g9E5KrDcEuJO6V30HN0EgLdt/dJMdNf8 7XkfR8HDAYh19hjpGvIgBjPnquxj87JwzIY7as6th0LqkhRU2SNdQV8HZR9KwSBhPnRV czHo403zp23KXrcsM08/nV2bPUojHfpVSEi551WrlEC1ULr5r8z941tvv1e2MlR4Qijh 9EBZbt+tDa6lu7TkuCImNHkJAVji7UA2MZpMfs1K5Q9EBmsfGqJSS656Ii5Nnr6XbLLb WaY/hTOUmZXuQiuSoO1F/drTxiMa85+cV1hTzNr8MlxiPqo4CB5G/B2dBJXn9JW1z5Su p9qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700246575; x=1700851375; h=mime-version:user-agent:date:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6X+F8YShLQtE8avud/u84BIAqUGk67a6WEZGVWhBZxI=; b=SV6Br2QEgFmOBx2UOUc3l7Tb2kZbMh1+qMiiL0or9H64dO7MaAgVVwQQm5AuvWGCKT 6tUQ2kWj7kvCW/VX65aDtdoI8X6H/q4zBLx48ES8bW3fbCO+WlfTMGjjXfjPj1uAK1sT 3eJRB2TZ3jJ3UW4tp4XcjSfOfeitC8feGHbP+NOMlE4WFJYM/SQ72kjh9UmOuWgpa+RQ sbAn1X9Fa4/yFidvQAZbllUkg2WLNMidqLGuBh1npijOAHRVb96ppmcwCqRTLiVNFRDD RbSNvuEM/cNd8BZa1SyTDLYJoo4rRTQJuV8zRQQd4s44Sv19XejNW9uCs3XC0twA89HP bdnQ== X-Gm-Message-State: AOJu0YzEdAh2hP1bxc/kInyWn+vEYm/QOduQe7kJ/Fgc7D0IVjC2XKlF 9pAlyTojGTo94Os49Zy++8psIW4mDs9Gd/k6Utk= X-Google-Smtp-Source: AGHT+IF8LFz8n6uEKnHakxJbfsUS2DFyxHbMWyCqUFcsLnfw7nTwy8wSOJdFH0CnUYTwU3MBPDeaMw== X-Received: by 2002:a05:6e02:3489:b0:34f:70ec:d4cf with SMTP id bp9-20020a056e02348900b0034f70ecd4cfmr512983ilb.8.1700246575680; Fri, 17 Nov 2023 10:42:55 -0800 (PST) Received: from [172.18.10.36] ([12.126.244.130]) by smtp.gmail.com with ESMTPSA id e20-20020a62ee14000000b0068fbaea118esm1697830pfi.45.2023.11.17.10.42.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Nov 2023 10:42:55 -0800 (PST) Message-ID: Subject: simplehash: preserve consistency in case of OOM From: Jeff Davis To: pgsql-hackers@postgresql.org Date: Fri, 17 Nov 2023 10:42:54 -0800 Content-Type: multipart/mixed; boundary="=-Wep1XQTs99wP3gMyXC0l" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-Wep1XQTs99wP3gMyXC0l Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Right now, if allocation fails while growing a hashtable, it's left in an inconsistent state and can't be used again. Patch attached. --=20 Jeff Davis PostgreSQL Contributor Team - AWS --=-Wep1XQTs99wP3gMyXC0l Content-Disposition: attachment; filename="v1-0001-simplehash-preserve-consistency-in-case-of-OOM.patch" Content-Type: text/x-patch; name="v1-0001-simplehash-preserve-consistency-in-case-of-OOM.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4MjA2OGQ3NDRmNjY4MDM5ZGU3MjQ5ODU0YmM0MmVlYWQ0ZTc3ZWJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDE3IE5vdiAyMDIzIDEwOjI0OjAzIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MV0gc2ltcGxl aGFzaDogcHJlc2VydmUgY29uc2lzdGVuY3kgaW4gY2FzZSBvZiBPT00uCgpDb21wdXRlIHNpemUg Zmlyc3QsIHRoZW4gYWxsb2NhdGUsIHRoZW4gdXBkYXRlIHRoZSBzdHJ1Y3R1cmUuCgpQcmV2aW91 c2x5LCBhbiBvdXQtb2YtbWVtb3J5IHdoZW4gZ3Jvd2luZyBjb3VsZCBsZWF2ZSB0aGUgaGFzaHRh YmxlIGluCmFuIGluY29uc2lzdGVudCBzdGF0ZS4KLS0tCiBzcmMvaW5jbHVkZS9saWIvc2ltcGxl aGFzaC5oIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbGliL3NpbXBsZWhhc2guaCBiL3NyYy9pbmNsdWRlL2xpYi9zaW1wbGVoYXNo LmgKaW5kZXggYjdhZGMxNmI4MC4uNTE3YzgxYmQwNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bGliL3NpbXBsZWhhc2guaAorKysgYi9zcmMvaW5jbHVkZS9saWIvc2ltcGxlaGFzaC5oCkBAIC0x MjgsNyArMTI4LDggQEAKICNkZWZpbmUgU0hfU1RBVCBTSF9NQUtFX05BTUUoc3RhdCkKIAogLyog aW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyAobm8gZXh0ZXJuYWxseSB2aXNpYmxlIHByb3RvdHlw ZXMpICovCi0jZGVmaW5lIFNIX0NPTVBVVEVfUEFSQU1FVEVSUyBTSF9NQUtFX05BTUUoY29tcHV0 ZV9wYXJhbWV0ZXJzKQorI2RlZmluZSBTSF9DT01QVVRFX1NJWkUgU0hfTUFLRV9OQU1FKGNvbXB1 dGVfc2l6ZSkKKyNkZWZpbmUgU0hfVVBEQVRFX1BBUkFNRVRFUlMgU0hfTUFLRV9OQU1FKHVwZGF0 ZV9wYXJhbWV0ZXJzKQogI2RlZmluZSBTSF9ORVhUIFNIX01BS0VfTkFNRShuZXh0KQogI2RlZmlu ZSBTSF9QUkVWIFNIX01BS0VfTkFNRShwcmV2KQogI2RlZmluZSBTSF9ESVNUQU5DRV9GUk9NX09Q VElNQUwgU0hfTUFLRV9OQU1FKGRpc3RhbmNlKQpAQCAtMzAzLDExICszMDQsMTEgQEAgU0hfU0NP UEUgdm9pZCBTSF9TVEFUKFNIX1RZUEUgKiB0Yik7CiAjZW5kaWYKIAogLyoKLSAqIENvbXB1dGUg c2l6aW5nIHBhcmFtZXRlcnMgZm9yIGhhc2h0YWJsZS4gQ2FsbGVkIHdoZW4gY3JlYXRpbmcgYW5k IGdyb3dpbmcKLSAqIHRoZSBoYXNodGFibGUuCisgKiBDb21wdXRlIGFsbG9jYXRpb24gc2l6ZSBm b3IgaGFzaHRhYmxlLiBSZXN1bHQgY2FuIGJlIHBhc3NlZCB0bworICogU0hfVVBEQVRFX1BBUkFN RVRFUlMuCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotU0hfQ09NUFVURV9QQVJBTUVURVJTKFNI X1RZUEUgKiB0YiwgdWludDY0IG5ld3NpemUpCitzdGF0aWMgaW5saW5lIHVpbnQ2NAorU0hfQ09N UFVURV9TSVpFKHVpbnQ2NCBuZXdzaXplKQogewogCXVpbnQ2NAkJc2l6ZTsKIApAQCAtMzI1LDYg KzMyNiwxOCBAQCBTSF9DT01QVVRFX1BBUkFNRVRFUlMoU0hfVFlQRSAqIHRiLCB1aW50NjQgbmV3 c2l6ZSkKIAlpZiAodW5saWtlbHkoKCgodWludDY0KSBzaXplb2YoU0hfRUxFTUVOVF9UWVBFKSkg KiBzaXplKSA+PSBTSVpFX01BWCAvIDIpKQogCQlzaF9lcnJvcigiaGFzaCB0YWJsZSB0b28gbGFy Z2UiKTsKIAorCXJldHVybiBzaXplOworfQorCisvKgorICogVXBkYXRlIHNpemluZyBwYXJhbWV0 ZXJzIGZvciBoYXNodGFibGUuIENhbGxlZCB3aGVuIGNyZWF0aW5nIGFuZCBncm93aW5nCisgKiB0 aGUgaGFzaHRhYmxlLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK1NIX1VQREFURV9QQVJBTUVU RVJTKFNIX1RZUEUgKiB0YiwgdWludDY0IG5ld3NpemUpCit7CisJdWludDY0CQlzaXplID0gU0hf Q09NUFVURV9TSVpFKG5ld3NpemUpOworCiAJLyogbm93IHNldCBzaXplICovCiAJdGItPnNpemUg PSBzaXplOwogCXRiLT5zaXplbWFzayA9ICh1aW50MzIpIChzaXplIC0gMSk7CkBAIC00NDYsMTAg KzQ1OSwxMSBAQCBTSF9DUkVBVEUoTWVtb3J5Q29udGV4dCBjdHgsIHVpbnQzMiBuZWxlbWVudHMs IHZvaWQgKnByaXZhdGVfZGF0YSkKIAkvKiBpbmNyZWFzZSBuZWxlbWVudHMgYnkgZmlsbGZhY3Rv ciwgd2FudCB0byBzdG9yZSBuZWxlbWVudHMgZWxlbWVudHMgKi8KIAlzaXplID0gTWluKChkb3Vi bGUpIFNIX01BWF9TSVpFLCAoKGRvdWJsZSkgbmVsZW1lbnRzKSAvIFNIX0ZJTExGQUNUT1IpOwog Ci0JU0hfQ09NUFVURV9QQVJBTUVURVJTKHRiLCBzaXplKTsKKwlzaXplID0gU0hfQ09NUFVURV9T SVpFKHNpemUpOwogCi0JdGItPmRhdGEgPSAoU0hfRUxFTUVOVF9UWVBFICopIFNIX0FMTE9DQVRF KHRiLCBzaXplb2YoU0hfRUxFTUVOVF9UWVBFKSAqIHRiLT5zaXplKTsKKwl0Yi0+ZGF0YSA9IChT SF9FTEVNRU5UX1RZUEUgKikgU0hfQUxMT0NBVEUodGIsIHNpemVvZihTSF9FTEVNRU5UX1RZUEUp ICogc2l6ZSk7CiAKKwlTSF9VUERBVEVfUEFSQU1FVEVSUyh0Yiwgc2l6ZSk7CiAJcmV0dXJuIHRi OwogfQogCkBAIC00OTAsMTAgKzUwNCwxMiBAQCBTSF9HUk9XKFNIX1RZUEUgKiB0YiwgdWludDY0 IG5ld3NpemUpCiAJQXNzZXJ0KG9sZHNpemUgIT0gU0hfTUFYX1NJWkUpOwogCUFzc2VydChvbGRz aXplIDwgbmV3c2l6ZSk7CiAKLQkvKiBjb21wdXRlIHBhcmFtZXRlcnMgZm9yIG5ldyB0YWJsZSAq LwotCVNIX0NPTVBVVEVfUEFSQU1FVEVSUyh0YiwgbmV3c2l6ZSk7CisJbmV3c2l6ZSA9IFNIX0NP TVBVVEVfU0laRShuZXdzaXplKTsKKworCXRiLT5kYXRhID0gKFNIX0VMRU1FTlRfVFlQRSAqKSBT SF9BTExPQ0FURSh0Yiwgc2l6ZW9mKFNIX0VMRU1FTlRfVFlQRSkgKiBuZXdzaXplKTsKIAotCXRi LT5kYXRhID0gKFNIX0VMRU1FTlRfVFlQRSAqKSBTSF9BTExPQ0FURSh0Yiwgc2l6ZW9mKFNIX0VM RU1FTlRfVFlQRSkgKiB0Yi0+c2l6ZSk7CisJLyogY29tcHV0ZSBwYXJhbWV0ZXJzIGZvciBuZXcg dGFibGUgKi8KKwlTSF9VUERBVEVfUEFSQU1FVEVSUyh0YiwgbmV3c2l6ZSk7CiAKIAluZXdkYXRh ID0gdGItPmRhdGE7CiAKQEAgLTExNzMsNyArMTE4OSw4IEBAIFNIX1NUQVQoU0hfVFlQRSAqIHRi KQogI3VuZGVmIFNIX1NUQVQKIAogLyogaW50ZXJuYWwgZnVuY3Rpb24gbmFtZXMgKi8KLSN1bmRl ZiBTSF9DT01QVVRFX1BBUkFNRVRFUlMKKyN1bmRlZiBTSF9DT01QVVRFX1NJWkUKKyN1bmRlZiBT SF9VUERBVEVfUEFSQU1FVEVSUwogI3VuZGVmIFNIX0NPTVBBUkVfS0VZUwogI3VuZGVmIFNIX0lO SVRJQUxfQlVDS0VUCiAjdW5kZWYgU0hfTkVYVAotLSAKMi4zNC4xCgo= --=-Wep1XQTs99wP3gMyXC0l--