According to cURL API documentation, HTTP1 pipelining is deprecated.
MultiHttpClient uses it (in a hard-coded way):
// Configure when to multiplex multiple requests onto single TCP handles $pipelining = $opts['usePipelining'] ?? $this->usePipelining; curl_multi_setopt( $this->cmh, CURLMOPT_PIPELINING, $pipelining ? 3 : 0 );
…and CdnCacheUpdate sets this option (otherwise nothing else seems to do it):
$http = MediaWikiServices::getInstance()->getHttpRequestFactory() ->createMultiClient( [ 'maxConnsPerHost' => 8, 'usePipelining' => true ] ); $http->runMulti( $reqs );
This results in persistent error logging for cache update jobs:
[2020-10-06T16:29:12.580126+09:00] error.ERROR: [{exception_id}] {exception_url} ErrorException from line 451 of w/includes/libs/http/MultiHttpClient.php: PHP Warning: curl_multi_setopt(): CURLPIPE_HTTP1 is no longer supported {"exception":"[object] (ErrorException(code: 0): PHP Warning: curl_multi_setopt(): CURLPIPE_HTTP1 is no longer supported at w/includes/libs/http/MultiHttpClient.php:451)","exception_id":"04ff6675aa6ed0a61e67af18","exception_url":"[no req]","caught_by":"mwe_handler"} []
Again, according to the documentation linked above the new default is to enable HTTP/2 multiplexing. Would it not make sense to therefore remove the curl_multi_setopt() call altogether?