On Thu, Mar 6, 2025 at 12:57 PM Jacob Champion <jacob.champ...@enterprisedb.com> wrote: > 3) There is a related performance bug on other platforms. If a Curl > timeout happens partway through a request (so libcurl won't clear it), > the timer-expired event will stay set and CPU will be burned to spin > pointlessly on drive_request(). This is much easier to notice after > taking Happy Eyeballs out of the picture. It doesn't cause logical > failures -- Curl basically discards the unnecessary calls -- but it's > definitely unintended. > > ... > > I plan to defer working on Problem 3, which should just be a > performance bug, until the tests are green again. And I would like to > eventually add some stronger unit tests for the timer behavior, to > catch other potential OS-specific problems in the future.
To follow up on this: I had intended to send a patch fixing the timer bug this week, but after fixing it, the performance problem did not disappear. Turns out: other file descriptors can get stuck open on BSD, depending on how complicated Curl wants to make the order of operations, and the existing tests aren't always enough to expose it. (It also depends on the Curl version installed.) I will split this off into its own thread soon, because this megathread is just too big, but I wanted to make a note here and file an open item. As part of that, I have a set of more rigorous unit tests for the libcurl-libpq interaction that I'm working on, since the external view of "the flow worked/didn't work" is not enough to indicate internal health. --Jacob