Re: Why is citext/regress failing on hamerkop?
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Alexander Lakhin <exclusion@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Andrew Dunstan <andrew@dunslane.net>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-05-14T22:26:43Z
Lists: pgsql-hackers
Attachments
- 0001-Add-kludge-to-make-FD_CLOSE-level-triggered.patch (text/x-patch) patch 0001
On Tue, May 14, 2024 at 9:00 PM Alexander Lakhin <exclusion@gmail.com> wrote: > 14.05.2024 03:38, Thomas Munro wrote: > > I was beginning to suspect that lingering odour myself. I haven't > > look at the GSS code but I was imagining that what we have here is > > perhaps not unsent data dropped on the floor due to linger policy > > (unclean socket close on process exist), but rather that the server > > didn't see the socket as ready to read because it lost track of the > > FD_CLOSE somewhere because the client closed it gracefully, and our > > server-side FD_CLOSE handling has always been a bit suspect. I wonder > > if the GSS code is somehow more prone to brokenness. One thing we > > learned in earlier problems was that abortive/error disconnections > > generate FD_CLOSE repeatedly, while graceful ones give you only one. > > In other words, if the other end politely calls closesocket(), the > > server had better not miss the FD_CLOSE event, because it won't come > > again. That's what > > > > https://commitfest.postgresql.org/46/3523/ > > > > is intended to fix. Does it help here? Unfortunately that's > > unpleasantly complicated and unbackpatchable (keeping a side-table of > > socket FDs and event handles, so we don't lose events between the > > cracks). > > Yes, that cure helps here too. I've tested it on b282fa88d~1 (the last > state when that patch set can be applied). Thanks for checking, and generally for your infinite patience with all these horrible Windows problems. OK, so we know what the problem is here. Here is the simplest solution I know of for that problem. I have proposed this in the past and received negative feedback because it's a really gross hack. But I don't personally know what else to do about the back-branches (or even if that complex solution is the right way forward for master). The attached kludge at least has the [de]merit of being a mirror image of the kludge that follows it for the "opposite" event. Does this fix it?
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Small refactoring around ExecCreateTableAs().
- 7926a9a80f6d 18.0 cited
-
Skip citext_utf8 test on Windows.
- e52a44b8a4c1 15.8 landed
- 91f498fdec14 16.4 landed
- cff4e5a36bfe 17.0 landed
-
Fix lost Windows socket EOF events.
- ba9fcac7209d 12.20 landed
- 3554d841d216 13.16 landed
- 894b497ac91d 14.13 landed
- 5546a834cc6f 15.8 landed
- a622095bcc4d 16.4 landed
- 3c1c82d4066e 17.0 landed
- a8458f508a7a 18.0 landed
-
Enable routine running of citext's UTF8-specific test cases.
- c2e8bd27519f 15.0 cited
-
Drops in the CreateProcess calls for Win32 (essentially wrapping up the
- 4cdf51e64627 8.0.0 cited