Merge branch '4.3' into 4.4
* 4.3: consistently throw NotSupportException [HttpKernel] Clarify error handler restoring process again [HttpClient] Remove CURLOPT_CONNECTTIMEOUT_MS curl opt [Intl] fix nullable phpdocs and useless method visibility of internal class Resilience against file_get_contents() race conditions.
This commit is contained in:
commit
2273de0011
@ -141,7 +141,7 @@ final class CurlHttpClient implements HttpClientInterface, LoggerAwareInterface
|
||||
CURLOPT_FOLLOWLOCATION => true,
|
||||
CURLOPT_MAXREDIRS => 0 < $options['max_redirects'] ? $options['max_redirects'] : 0,
|
||||
CURLOPT_COOKIEFILE => '', // Keep track of cookies during redirects
|
||||
CURLOPT_CONNECTTIMEOUT_MS => 1000 * $options['timeout'],
|
||||
CURLOPT_TIMEOUT => 0,
|
||||
CURLOPT_PROXY => $options['proxy'],
|
||||
CURLOPT_NOPROXY => $options['no_proxy'] ?? $_SERVER['no_proxy'] ?? $_SERVER['NO_PROXY'] ?? '',
|
||||
CURLOPT_SSL_VERIFYPEER => $options['verify_peer'],
|
||||
|
@ -340,7 +340,7 @@ class Store implements StoreInterface
|
||||
{
|
||||
$path = $this->getPath($key);
|
||||
|
||||
return file_exists($path) ? file_get_contents($path) : null;
|
||||
return file_exists($path) && false !== ($contents = file_get_contents($path)) ? $contents : null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -503,10 +503,9 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->debug) {
|
||||
if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) {
|
||||
$collectedLogs = [];
|
||||
$previousHandler = \defined('PHPUNIT_COMPOSER_INSTALL');
|
||||
$previousHandler = $previousHandler ?: set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) {
|
||||
$previousHandler = set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) {
|
||||
if (E_USER_DEPRECATED !== $type && E_DEPRECATED !== $type) {
|
||||
return $previousHandler ? $previousHandler($type, $message, $file, $line) : false;
|
||||
}
|
||||
@ -549,7 +548,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
||||
$container = $this->buildContainer();
|
||||
$container->compile();
|
||||
} finally {
|
||||
if ($this->debug && true !== $previousHandler) {
|
||||
if ($collectDeprecations) {
|
||||
restore_error_handler();
|
||||
|
||||
file_put_contents($cacheDir.'/'.$class.'Deprecations.log', serialize(array_values($collectedLogs)));
|
||||
|
@ -70,7 +70,7 @@ class Collator
|
||||
const SORT_STRING = 1;
|
||||
|
||||
/**
|
||||
* @param string $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
* @param string|null $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
*
|
||||
* @throws MethodArgumentValueNotImplementedException When $locale different than "en" or null is passed
|
||||
*/
|
||||
@ -84,7 +84,7 @@ class Collator
|
||||
/**
|
||||
* Static constructor.
|
||||
*
|
||||
* @param string $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
* @param string|null $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
*
|
||||
* @return self
|
||||
*
|
||||
|
@ -118,7 +118,7 @@ class IntlDateFormatter
|
||||
private $timeZoneId;
|
||||
|
||||
/**
|
||||
* @param string $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
* @param string|null $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
* @param int|null $datetype Type of date formatting, one of the format type constants
|
||||
* @param int|null $timetype Type of time formatting, one of the format type constants
|
||||
* @param \IntlTimeZone|\DateTimeZone|string|null $timezone Timezone identifier
|
||||
@ -152,7 +152,7 @@ class IntlDateFormatter
|
||||
/**
|
||||
* Static constructor.
|
||||
*
|
||||
* @param string $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
* @param string|null $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
* @param int|null $datetype Type of date formatting, one of the format type constants
|
||||
* @param int|null $timetype Type of time formatting, one of the format type constants
|
||||
* @param \IntlTimeZone|\DateTimeZone|string|null $timezone Timezone identifier
|
||||
|
@ -241,7 +241,7 @@ class NumberFormatter
|
||||
];
|
||||
|
||||
/**
|
||||
* @param string $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
* @param string|null $locale The locale code. The only currently supported locale is "en" (or null using the default locale, i.e. "en")
|
||||
* @param int $style Style of the formatting, one of the format style constants.
|
||||
* The only supported styles are NumberFormatter::DECIMAL
|
||||
* and NumberFormatter::CURRENCY.
|
||||
|
@ -101,7 +101,7 @@ class CombinedStore implements StoreInterface, LoggerAwareInterface
|
||||
public function waitAndSave(Key $key)
|
||||
{
|
||||
@trigger_error(sprintf('%s() is deprecated since Symfony 4.4 and will be removed in Symfony 5.0.', __METHOD__), E_USER_DEPRECATED);
|
||||
throw new NotSupportedException(sprintf('The store "%s" does not supports blocking locks.', \get_class($this)));
|
||||
throw new NotSupportedException(sprintf('The store "%s" does not support blocking locks.', \get_class($this)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -14,6 +14,7 @@ namespace Symfony\Component\Lock\Store;
|
||||
use Symfony\Component\Lock\Exception\InvalidArgumentException;
|
||||
use Symfony\Component\Lock\Exception\InvalidTtlException;
|
||||
use Symfony\Component\Lock\Exception\LockConflictedException;
|
||||
use Symfony\Component\Lock\Exception\NotSupportedException;
|
||||
use Symfony\Component\Lock\Key;
|
||||
use Symfony\Component\Lock\StoreInterface;
|
||||
|
||||
@ -77,7 +78,7 @@ class MemcachedStore implements StoreInterface
|
||||
public function waitAndSave(Key $key)
|
||||
{
|
||||
@trigger_error(sprintf('%s() is deprecated since Symfony 4.4 and will be removed in Symfony 5.0.', __METHOD__), E_USER_DEPRECATED);
|
||||
throw new InvalidArgumentException(sprintf('The store "%s" does not supports blocking locks.', \get_class($this)));
|
||||
throw new NotSupportedException(sprintf('The store "%s" does not support blocking locks.', \get_class($this)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -16,6 +16,7 @@ use Symfony\Component\Cache\Traits\RedisProxy;
|
||||
use Symfony\Component\Lock\Exception\InvalidArgumentException;
|
||||
use Symfony\Component\Lock\Exception\InvalidTtlException;
|
||||
use Symfony\Component\Lock\Exception\LockConflictedException;
|
||||
use Symfony\Component\Lock\Exception\NotSupportedException;
|
||||
use Symfony\Component\Lock\Key;
|
||||
use Symfony\Component\Lock\StoreInterface;
|
||||
|
||||
@ -80,7 +81,7 @@ class RedisStore implements StoreInterface
|
||||
public function waitAndSave(Key $key)
|
||||
{
|
||||
@trigger_error(sprintf('%s() is deprecated since Symfony 4.4 and will be removed in Symfony 5.0.', __METHOD__), E_USER_DEPRECATED);
|
||||
throw new InvalidArgumentException(sprintf('The store "%s" does not supports blocking locks.', \get_class($this)));
|
||||
throw new NotSupportedException(sprintf('The store "%s" does not support blocking locks.', \get_class($this)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -583,6 +583,16 @@ abstract class HttpClientTestCase extends TestCase
|
||||
$client->request('GET', 'http://symfony.com:8057/', ['timeout' => 1]);
|
||||
}
|
||||
|
||||
public function testNotATimeout()
|
||||
{
|
||||
$client = $this->getHttpClient(__FUNCTION__);
|
||||
$response = $client->request('GET', 'http://localhost:8057/timeout-header', [
|
||||
'timeout' => 0.5,
|
||||
]);
|
||||
usleep(510000);
|
||||
$this->assertSame(200, $response->getStatusCode());
|
||||
}
|
||||
|
||||
public function testTimeoutOnAccess()
|
||||
{
|
||||
$client = $this->getHttpClient(__FUNCTION__);
|
||||
|
Reference in New Issue
Block a user