From: Jacob Champion Date: Wed, 17 Jun 2026 16:57:59 +0000 (-0700) Subject: oauth: Skip call-count test for libcurl 8.20.0 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fd5ea2e9e37c1aee80698b3e8d9d835eaa19a30c;p=thirdparty%2Fpostgresql.git oauth: Skip call-count test for libcurl 8.20.0 The call-count test in 001_server.pl runs into a recent upstream regression in Curl: https://github.com/curl/curl/issues/21547 The symptom is high CPU usage on some platforms during OAuth HTTP requests. But it looks like the fix is on track for a June 2026 release, as part of Curl 8.21.0, so just skip the test if we happen to be using the broken version. Reported-by: Andrew Dunstan Reported-by: Tom Lane Tested-by: Tom Lane Discussion: https://postgr.es/m/CAOYmi%2B%3DyrwMSsHuNJ1V14isA4iSix5Xb3P3VEp1X0BS61MdV4A%40mail.gmail.com Backpatch-through: 18 --- diff --git a/src/test/modules/oauth_validator/t/001_server.pl b/src/test/modules/oauth_validator/t/001_server.pl index 0d7618a5ef1..8941a355423 100644 --- a/src/test/modules/oauth_validator/t/001_server.pl +++ b/src/test/modules/oauth_validator/t/001_server.pl @@ -510,17 +510,27 @@ like( qr@Visit https://example\.com/ and enter the code: postgresuser@, "call count: stderr matches"); -my $count_pattern = qr/\[libpq\] total number of polls: (\d+)/; -if (like($stderr, $count_pattern, "call count: count is printed")) +SKIP: { - # For reference, a typical flow with two retries might take between 5-15 - # calls to the client implementation. And while this will probably continue - # to change across OSes and Curl updates, we're likely in trouble if we see - # hundreds or thousands of calls. - $stderr =~ $count_pattern; - unless (cmp_ok($1, '<', 100, "call count is reasonably small")) + # Curl 8.20.0 regressed this test case: + # + # https://github.com/curl/curl/issues/21547 + # + skip 'call-count test is known to fail with libcurl 8.20.0', 2 + if $stderr =~ m/\Qinitialized libcurl 8.20.0\E/; + + my $count_pattern = qr/\[libpq\] total number of polls: (\d+)/; + if (like($stderr, $count_pattern, "call count: count is printed")) { - diag "full stderr:\n$stderr"; + # For reference, a typical flow with two retries might take between 5-15 + # calls to the client implementation. And while this will probably + # continue to change across OSes and Curl updates, we're likely in + # trouble if we see hundreds or thousands of calls. + $stderr =~ $count_pattern; + unless (cmp_ok($1, '<', 100, "call count is reasonably small")) + { + diag "full stderr:\n$stderr"; + } } }