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 1r5unB-00Ft3a-45 for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Nov 2023 21:29:53 +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 1r5un9-00Cyc9-Kh for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Nov 2023 21:29:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r5un9-00Cyba-41 for pgsql-hackers@lists.postgresql.org; Wed, 22 Nov 2023 21:29:51 +0000 Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r5un5-006rvF-UR for pgsql-hackers@postgresql.org; Wed, 22 Nov 2023 21:29:49 +0000 Received: by mail-ot1-x329.google.com with SMTP id 46e09a7af769-6d64c1155a8so159563a34.2 for ; Wed, 22 Nov 2023 13:29:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neon.tech; s=google; t=1700688587; x=1701293387; darn=postgresql.org; h=in-reply-to:references:to:subject:cc:from:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ILwZo82LqbTaM4ItsfaCV3KmZ6yaRU2uvCNYgVwR2Q8=; b=AcFtdk12X/aJIGB85vwn1pTQ0tIqEJmZOeItRtPR8l2hxSChvxyPHAde/O1tXf5Tzn WWfaLmlA7d4cUJZSSlcIT+rkqig0WVvqtetRU0JYKmp8762/zRGnmnf6knzDQcvxIwoM 1dr4TvW5mI0zxltKigGDg/WABxLOeIZ/fDf7Y= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700688587; x=1701293387; h=in-reply-to:references:to:subject:cc:from:message-id:date :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ILwZo82LqbTaM4ItsfaCV3KmZ6yaRU2uvCNYgVwR2Q8=; b=ulR9v/Y1u67/yCsKs0WPn7VBMPI2fkOa/ULdTYoClWKNL/PFJu6p9YxQP65THYzpz4 Qn/Jhy2+VblWD20NhgwwN/5q2zu0D7C9j61r5Z6fgve8rOqfiiL5BJFKqnluVHG0escy 9+T5W/9qcsXGSFoeYia/oOrzUHuPu5hk1xAm7//p1PwNlwNu/lTpTLHiGMf7ooFHkvAe UIXXIVdwn7m+7JhrKVv9iihjRaS13/u4Qoi2CKZ0CvNLje2P7S//emTusLoCGQ8BUvTd SOXSerBXy4XSWj9Lqds6iggQkIgsmd794wqp4CeL5nRDE0g3G/EgysQxAEmPA1Y1VP/X N+5A== X-Gm-Message-State: AOJu0Yy2qvMDIi5zdf3mEt5Q9zJDdbhM5w2kRo6VnKl/TH6EH25PNhJK +YTApVCSX01f/ABcDBEkLls3dg== X-Google-Smtp-Source: AGHT+IFd1cuwuuutq5hvQCHr18CK1P/cuKxBFe0WF+kbsCf0fQdDxE4h2bjFRxUyp8aDSXMbBDBEoA== X-Received: by 2002:a05:6870:3846:b0:1ef:b16f:d294 with SMTP id z6-20020a056870384600b001efb16fd294mr4256995oal.38.1700688587079; Wed, 22 Nov 2023 13:29:47 -0800 (PST) Received: from localhost (2603-8080-e400-3bb2-0000-0000-0000-1c05.res6.spectrum.com. [2603:8080:e400:3bb2::1c05]) by smtp.gmail.com with ESMTPSA id oo21-20020a0568715a9500b001eb79fedbb1sm112108oac.17.2023.11.22.13.29.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Nov 2023 13:29:46 -0800 (PST) Content-Type: multipart/mixed; boundary=dc9bc228c4e6e84e4a7c0055584302ad70e405541121ec774f6a045ce575 Mime-Version: 1.0 Date: Wed, 22 Nov 2023 15:29:45 -0600 Message-Id: From: "Tristan Partin" Cc: "Tom Lane" , , "Shlok Kyal" Subject: Re: psql not responding to SIGINT upon db reconnection To: "Heikki Linnakangas" X-Mailer: aerc 0.16.0-68-g9b3e3d1b8803 References: <1588058.1690220636@sss.pgh.pa.us> <5e28b89f-0033-4e42-8184-b71b731c1aa2@iki.fi> <9b3693b7-0bc3-430a-b43f-eae44e8a39b6@iki.fi> In-Reply-To: <9b3693b7-0bc3-430a-b43f-eae44e8a39b6@iki.fi> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --dc9bc228c4e6e84e4a7c0055584302ad70e405541121ec774f6a045ce575 Content-Type: multipart/alternative; boundary=9b33b4f37d2856b97a79dc783370f4592f9cb5cc7b4a0a8d941b76903bcb --9b33b4f37d2856b97a79dc783370f4592f9cb5cc7b4a0a8d941b76903bcb Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Wed Nov 22, 2023 at 3:00 PM CST, Heikki Linnakangas wrote: > On 22/11/2023 19:29, Tristan Partin wrote: > > On Thu Nov 16, 2023 at 8:33 AM CST, Heikki Linnakangas wrote: > >> On 06/11/2023 19:16, Tristan Partin wrote: > >>>>> That sounds like a much better solution. Attached you will find a v= 4 > >>>>> that implements your suggestion. Please let me know if there is > >>>>> something that I missed. I can confirm that the patch works. > >> > >> This patch is missing a select(). It will busy loop until the connecti= on > >> is established or cancelled. > >=20 > > If I add a wait (select, poll, etc.), then I can't control-C during the > > blocking call, so it doesn't really solve the problem. > > Hmm, they should return with EINTR on signal. At least on Linux; I'm not= =20 > sure how portable that is. See signal(7) man page, section "Interruption= =20 > of system calls and library functions by signal handlers". You could=20 > also use a timeout like 5 s to ensure that you wake up and notice that=20 > the signal was received eventually, even if it doesn't interrupt the=20 > blocking call. Ha, you're right. I had this working yesterday, but convinced myself it=20 didn't. I had a do while loop wrapping the blocking call. Here is a v4,=20 which seems to pass the tests that were pointed out to be failing=20 earlier. Noticed that I copy-pasted pqSocketPoll() into the psql code. I think=20 this may be controversial. Not sure what the best solution to the issue=20 is. I will pay attention to the buildfarm animals when they pick this=20 up. --=20 Tristan Partin Neon (https://neon.tech) --9b33b4f37d2856b97a79dc783370f4592f9cb5cc7b4a0a8d941b76903bcb-- --dc9bc228c4e6e84e4a7c0055584302ad70e405541121ec774f6a045ce575 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0001-Allow-SIGINT-to-cancel-psql-database-reconnection.patch Content-Type: text/x-patch; charset=utf-8; name=v4-0001-Allow-SIGINT-to-cancel-psql-database-reconnection.patch RnJvbSAxYjQzMDNkZjEyMDBjNTYxY2Y0NzhmOWM3MDM3ZmY5NDBmNmNkNzQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlzdGFuIFBhcnRpbiA8dHJpc3RhbkBuZW9uLnRlY2g+CkRh dGU6IE1vbiwgMjQgSnVsIDIwMjMgMTE6MTI6NTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHY0XSBB bGxvdyBTSUdJTlQgdG8gY2FuY2VsIHBzcWwgZGF0YWJhc2UgcmVjb25uZWN0aW9ucwoKQWZ0ZXIg aW5zdGFsbGluZyB0aGUgU0lHSU5UIGhhbmRsZXIgaW4gcHNxbCwgU0lHSU5UIGNhbiBubyBsb25n ZXIgY2FuY2VsCmRhdGFiYXNlIHJlY29ubmVjdGlvbnMuIEZvciBpbnN0YW5jZSwgaWYgdGhlIHVz ZXIgc3RhcnRzIGEgcmVjb25uZWN0aW9uCmFuZCB0aGVuIG5lZWRzIHRvIGRvIHNvbWUgZm9ybSBv ZiBpbnRlcmFjdGlvbiAoaWUgcHNxbCBpcyBwb2xsaW5nKSwKdGhlcmUgaXMgbm8gd2F5IHRvIGNh bmNlbCB0aGUgcmVjb25uZWN0aW9uIHByb2Nlc3MgY3VycmVudGx5LgoKVXNlIFBRY29ubmVjdFN0 YXJ0UGFyYW1zKCkgaW4gb3JkZXIgdG8gaW5zZXJ0IGEgQ2FuY2VsUmVxdWVzdGVkIGNoZWNrCmlu dG8gdGhlIHBvbGxpbmcgbG9vcC4KLS0tCiBzcmMvYmluL3BzcWwvY29tbWFuZC5jIHwgMTI5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwg MTI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvY29tbWFuZC5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwppbmRleCA4MmNjMDkxNTY4Li41 ODhlZWQ5MzUxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9i aW4vcHNxbC9jb21tYW5kLmMKQEAgLTExLDYgKzExLDExIEBACiAjaW5jbHVkZSA8dGltZS5oPgog I2luY2x1ZGUgPHB3ZC5oPgogI2luY2x1ZGUgPHV0aW1lLmg+CisjaWYgSEFWRV9QT0xMCisjaW5j bHVkZSA8cG9sbC5oPgorI2Vsc2UKKyNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CisjZW5kaWYKICNp Zm5kZWYgV0lOMzIKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgkJCS8qIGZvciBzdGF0KCkgKi8KICNp bmNsdWRlIDxzeXMvdGltZS5oPgkJCS8qIGZvciBzZXRpdGltZXIoKSAqLwpAQCAtNDAsNiArNDUs NyBAQAogI2luY2x1ZGUgImxhcmdlX29iai5oIgogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAjaW5j bHVkZSAibGlicHEvcHFjb21tLmgiCisjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNs dWRlICJtYWlubG9vcC5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIKICNp bmNsdWRlICJwcWV4cGJ1ZmZlci5oIgpAQCAtMzI1MSw2ICszMjU3LDkwIEBAIGNvcHlfcHJldmlv dXNfcXVlcnkoUFFFeHBCdWZmZXIgcXVlcnlfYnVmLCBQUUV4cEJ1ZmZlciBwcmV2aW91c19idWYp CiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogQ2hlY2sgYSBmaWxlIGRlc2NyaXB0b3IgZm9y IHJlYWQgYW5kL29yIHdyaXRlIGRhdGEsIHBvc3NpYmx5IHdhaXRpbmcuCisgKiBJZiBuZWl0aGVy IGZvclJlYWQgbm9yIGZvcldyaXRlIGFyZSBzZXQsIGltbWVkaWF0ZWx5IHJldHVybiBhIHRpbWVv dXQKKyAqIGNvbmRpdGlvbiAod2l0aG91dCB3YWl0aW5nKS4gIFJldHVybiA+MCBpZiBjb25kaXRp b24gaXMgbWV0LCAwCisgKiBpZiBhIHRpbWVvdXQgb2NjdXJyZWQsIC0xIGlmIGFuIGVycm9yIG9y IGludGVycnVwdCBvY2N1cnJlZC4KKyAqCisgKiBUaW1lb3V0IGlzIGluZmluaXRlIGlmIGVuZF90 aW1lIGlzIC0xLiAgVGltZW91dCBpcyBpbW1lZGlhdGUgKG5vIGJsb2NraW5nKQorICogaWYgZW5k X3RpbWUgaXMgMCAob3IgaW5kZWVkLCBhbnkgdGltZSBiZWZvcmUgbm93KS4KKyAqLworc3RhdGlj IGludAorcHFTb2NrZXRQb2xsKGludCBzb2NrLCBpbnQgZm9yUmVhZCwgaW50IGZvcldyaXRlLCB0 aW1lX3QgZW5kX3RpbWUpCit7CisJLyogV2UgdXNlIHBvbGwoMikgaWYgYXZhaWxhYmxlLCBvdGhl cndpc2Ugc2VsZWN0KDIpICovCisjaWZkZWYgSEFWRV9QT0xMCisJc3RydWN0IHBvbGxmZCBpbnB1 dF9mZDsKKwlpbnQJCQl0aW1lb3V0X21zOworCisJaWYgKCFmb3JSZWFkICYmICFmb3JXcml0ZSkK KwkJcmV0dXJuIDA7CisKKwlpbnB1dF9mZC5mZCA9IHNvY2s7CisJaW5wdXRfZmQuZXZlbnRzID0g UE9MTEVSUjsKKwlpbnB1dF9mZC5yZXZlbnRzID0gMDsKKworCWlmIChmb3JSZWFkKQorCQlpbnB1 dF9mZC5ldmVudHMgfD0gUE9MTElOOworCWlmIChmb3JXcml0ZSkKKwkJaW5wdXRfZmQuZXZlbnRz IHw9IFBPTExPVVQ7CisKKwkvKiBDb21wdXRlIGFwcHJvcHJpYXRlIHRpbWVvdXQgaW50ZXJ2YWwg Ki8KKwlpZiAoZW5kX3RpbWUgPT0gKCh0aW1lX3QpIC0xKSkKKwkJdGltZW91dF9tcyA9IC0xOwor CWVsc2UKKwl7CisJCXRpbWVfdAkJbm93ID0gdGltZShOVUxMKTsKKworCQlpZiAoZW5kX3RpbWUg PiBub3cpCisJCQl0aW1lb3V0X21zID0gKGVuZF90aW1lIC0gbm93KSAqIDEwMDA7CisJCWVsc2UK KwkJCXRpbWVvdXRfbXMgPSAwOworCX0KKworCXJldHVybiBwb2xsKCZpbnB1dF9mZCwgMSwgdGlt ZW91dF9tcyk7CisjZWxzZQkJCQkJCQkvKiAhSEFWRV9QT0xMICovCisKKwlmZF9zZXQJCWlucHV0 X21hc2s7CisJZmRfc2V0CQlvdXRwdXRfbWFzazsKKwlmZF9zZXQJCWV4Y2VwdF9tYXNrOworCXN0 cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisJc3RydWN0IHRpbWV2YWwgKnB0cl90aW1lb3V0OworCisJ aWYgKCFmb3JSZWFkICYmICFmb3JXcml0ZSkKKwkJcmV0dXJuIDA7CisKKwlGRF9aRVJPKCZpbnB1 dF9tYXNrKTsKKwlGRF9aRVJPKCZvdXRwdXRfbWFzayk7CisJRkRfWkVSTygmZXhjZXB0X21hc2sp OworCWlmIChmb3JSZWFkKQorCQlGRF9TRVQoc29jaywgJmlucHV0X21hc2spOworCisJaWYgKGZv cldyaXRlKQorCQlGRF9TRVQoc29jaywgJm91dHB1dF9tYXNrKTsKKwlGRF9TRVQoc29jaywgJmV4 Y2VwdF9tYXNrKTsKKworCS8qIENvbXB1dGUgYXBwcm9wcmlhdGUgdGltZW91dCBpbnRlcnZhbCAq LworCWlmIChlbmRfdGltZSA9PSAoKHRpbWVfdCkgLTEpKQorCQlwdHJfdGltZW91dCA9IE5VTEw7 CisJZWxzZQorCXsKKwkJdGltZV90CQlub3cgPSB0aW1lKE5VTEwpOworCisJCWlmIChlbmRfdGlt ZSA+IG5vdykKKwkJCXRpbWVvdXQudHZfc2VjID0gZW5kX3RpbWUgLSBub3c7CisJCWVsc2UKKwkJ CXRpbWVvdXQudHZfc2VjID0gMDsKKwkJdGltZW91dC50dl91c2VjID0gMDsKKwkJcHRyX3RpbWVv dXQgPSAmdGltZW91dDsKKwl9CisKKwlyZXR1cm4gc2VsZWN0KHNvY2sgKyAxLCAmaW5wdXRfbWFz aywgJm91dHB1dF9tYXNrLAorCQkJCSAgJmV4Y2VwdF9tYXNrLCBwdHJfdGltZW91dCk7CisjZW5k aWYJCQkJCQkJLyogSEFWRV9QT0xMICovCit9CisKIC8qCiAgKiBBc2sgdGhlIHVzZXIgZm9yIGEg cGFzc3dvcmQ7ICd1c2VybmFtZScgaXMgdGhlIHVzZXJuYW1lIHRoZQogICogcGFzc3dvcmQgaXMg Zm9yLCBpZiBvbmUgaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQuCkBAIC0zMzI0LDYgKzM0 MTQsNyBAQCBkb19jb25uZWN0KGVudW0gdHJpdmFsdWUgcmV1c2VfcHJldmlvdXNfc3BlY2lmaWNh dGlvbiwKIAlib29sCQlrZWVwX3Bhc3N3b3JkID0gdHJ1ZTsKIAlib29sCQloYXNfY29ubmVjdGlv bl9zdHJpbmc7CiAJYm9vbAkJcmV1c2VfcHJldmlvdXM7CisJYm9vbAkJZm9yX3JlYWQ7CiAKIAlo YXNfY29ubmVjdGlvbl9zdHJpbmcgPSBkYm5hbWUgPwogCQlyZWNvZ25pemVkX2Nvbm5lY3Rpb25f c3RyaW5nKGRibmFtZSkgOiBmYWxzZTsKQEAgLTM2MTQsMTEgKzM3MDUsNDcgQEAgZG9fY29ubmVj dChlbnVtIHRyaXZhbHVlIHJldXNlX3ByZXZpb3VzX3NwZWNpZmljYXRpb24sCiAJCXZhbHVlc1tw YXJhbW51bV0gPSBOVUxMOwogCiAJCS8qIE5vdGUgd2UgZG8gbm90IHdhbnQgbGlicHEgdG8gcmUt ZXhwYW5kIHRoZSBkYm5hbWUgcGFyYW1ldGVyICovCi0JCW5fY29ubiA9IFBRY29ubmVjdGRiUGFy YW1zKGtleXdvcmRzLCB2YWx1ZXMsIGZhbHNlKTsKKwkJbl9jb25uID0gUFFjb25uZWN0U3RhcnRQ YXJhbXMoa2V5d29yZHMsIHZhbHVlcywgZmFsc2UpOwogCiAJCXBnX2ZyZWUoa2V5d29yZHMpOwog CQlwZ19mcmVlKHZhbHVlcyk7CiAKKwkJZm9yX3JlYWQgPSBmYWxzZTsKKwkJd2hpbGUgKHRydWUp IHsKKwkJCWludAkJcmM7CisJCQlpbnQJCXNvY2s7CisKKwkJCWlmIChjYW5jZWxfcHJlc3NlZCkK KwkJCQlicmVhazsKKworCQkJc29jayA9IFBRc29ja2V0KG5fY29ubik7CisJCQlpZiAoc29jayA9 PSAtMSkKKwkJCQlicmVhazsKKworCQkJcmMgPSBwcVNvY2tldFBvbGwoc29jaywgZm9yX3JlYWQs ICFmb3JfcmVhZCwgKHRpbWVfdCktMSk7CisJCQlBc3NlcnQocmMgIT0gMCk7IC8qIFRpbWVvdXQg aXMgaW1wb3NzaWJsZS4gKi8KKwkJCWlmIChyYyA9PSAtMSkKKwkJCXsKKwkJCQlzdWNjZXNzID0g ZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCXN3aXRjaCAoUFFjb25uZWN0UG9sbChuX2Nv bm4pKSB7CisJCQljYXNlIFBHUkVTX1BPTExJTkdfT0s6CisJCQljYXNlIFBHUkVTX1BPTExJTkdf RkFJTEVEOgorCQkJCWdvdG8gZmluaXNoOworCQkJY2FzZSBQR1JFU19QT0xMSU5HX1JFQURJTkc6 CisJCQkJZm9yX3JlYWQgPSB0cnVlOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSBQR1JFU19QT0xM SU5HX1dSSVRJTkc6CisJCQkJZm9yX3JlYWQgPSBmYWxzZTsKKwkJCQljb250aW51ZTsKKwkJCWNh c2UgUEdSRVNfUE9MTElOR19BQ1RJVkU6CisJCQkJcGdfdW5yZWFjaGFibGUoKTsKKwkJCX0KKwkJ fQorCisJZmluaXNoOgogCQlpZiAoUFFzdGF0dXMobl9jb25uKSA9PSBDT05ORUNUSU9OX09LKQog CQkJYnJlYWs7CiAKLS0gClRyaXN0YW4gUGFydGluCk5lb24gKGh0dHBzOi8vbmVvbi50ZWNoKQoK --dc9bc228c4e6e84e4a7c0055584302ad70e405541121ec774f6a045ce575--