Re: psql not responding to SIGINT upon db reconnection
От | Tristan Partin |
---|---|
Тема | Re: psql not responding to SIGINT upon db reconnection |
Дата | |
Msg-id | CX5NSE8R07D8.9D8M8LBKP119@neon.tech обсуждение исходный текст |
Ответ на | Re: psql not responding to SIGINT upon db reconnection (Heikki Linnakangas <hlinnaka@iki.fi>) |
Ответы |
Re: psql not responding to SIGINT upon db reconnection
|
Список | pgsql-hackers |
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 v4 > >>>>> 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 connection > >> is established or cancelled. > > > > 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 > sure how portable that is. See signal(7) man page, section "Interruption > of system calls and library functions by signal handlers". You could > also use a timeout like 5 s to ensure that you wake up and notice that > the signal was received eventually, even if it doesn't interrupt the > blocking call. Ha, you're right. I had this working yesterday, but convinced myself it didn't. I had a do while loop wrapping the blocking call. Here is a v4, which seems to pass the tests that were pointed out to be failing earlier. Noticed that I copy-pasted pqSocketPoll() into the psql code. I think this may be controversial. Not sure what the best solution to the issue is. I will pay attention to the buildfarm animals when they pick this up. -- Tristan Partin Neon (https://neon.tech)
Вложения
В списке pgsql-hackers по дате отправления: