Updated Rector to commit f0141afbc14283e1d7b2f40b5d30e42ab0045623

f0141afbc1 Cleanup CachedContainer invalidation (#3867)
This commit is contained in:
Tomas Votruba 2023-05-17 13:02:11 +00:00
parent 5a424135e9
commit c7f7b9b6bb
9 changed files with 87 additions and 21 deletions

View File

@ -52,13 +52,7 @@ abstract class AbstractTestCase extends TestCase
if (!self::$currentContainer instanceof ContainerInterface) {
throw new ShouldNotHappenException('First, create container with "boot()" or "bootWithConfigFileInfos([...])"');
}
try {
$object = self::$currentContainer->get($type);
} catch (Throwable $throwable) {
// clear compiled container cache, to trigger re-discovery
RectorKernel::clearCache();
throw $throwable;
}
$object = self::$currentContainer->get($type);
if ($object === null) {
$message = \sprintf('Service "%s" was not found', $type);
throw new ShouldNotHappenException($message);

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = 'a8fdf00925e9b46f3372da01d90d52780d1e802a';
public const PACKAGE_VERSION = 'f0141afbc14283e1d7b2f40b5d30e42ab0045623';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2023-05-17 10:43:49';
public const RELEASE_DATE = '2023-05-17 19:57:56';
/**
* @var int
*/

View File

@ -0,0 +1,8 @@
<?php
declare (strict_types=1);
namespace Rector\Core\Exception\Cache;
final class StaleContainerCacheException extends \RuntimeException
{
}

View File

@ -0,0 +1,59 @@
<?php
declare (strict_types=1);
namespace Rector\Core\Kernel;
use Rector\Core\Exception\Cache\StaleContainerCacheException;
use RectorPrefix202305\Symfony\Component\DependencyInjection\ContainerInterface;
final class CacheInvalidatingContainer implements ContainerInterface
{
/**
* @readonly
* @var \Symfony\Component\DependencyInjection\ContainerInterface
*/
private $wrapped;
public function __construct(ContainerInterface $wrapped)
{
$this->wrapped = $wrapped;
}
public function set(string $id, ?object $service) : void
{
$this->wrapped->set($id, $service);
}
public function get(string $id, int $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE) : ?object
{
try {
return $this->wrapped->get($id, $invalidBehavior);
} catch (\Throwable $throwable) {
// clear compiled container cache, to trigger re-discovery
\Rector\Core\Kernel\RectorKernel::clearCache();
throw new StaleContainerCacheException('Container cache is outdated and was cleared. please re-run the command.', 0, $throwable);
}
}
public function has(string $id) : bool
{
return $this->wrapped->has($id);
}
public function initialized(string $id) : bool
{
return $this->wrapped->initialized($id);
}
/**
* @return array<mixed>|bool|float|int|string|\UnitEnum|null
*/
public function getParameter(string $name)
{
return $this->wrapped->getParameter($name);
}
public function hasParameter(string $name) : bool
{
return $this->wrapped->hasParameter($name);
}
/**
* @param \UnitEnum|float|array<mixed>|bool|int|string|null $value
*/
public function setParameter(string $name, $value) : void
{
$this->wrapped->setParameter($name, $value);
}
}

View File

@ -43,10 +43,11 @@ final class CachedContainerBuilder
if (\file_exists($file)) {
require_once $file;
$className = '\\' . __NAMESPACE__ . '\\' . $className;
$container = new $className();
if (!$container instanceof ContainerInterface) {
$cachedContainer = new $className();
if (!$cachedContainer instanceof ContainerInterface) {
throw new ShouldNotHappenException();
}
$container = new \Rector\Core\Kernel\CacheInvalidatingContainer($cachedContainer);
} else {
$container = $containerBuilderCallback($configFiles);
$phpDumper = new PhpDumper($container);

2
vendor/autoload.php vendored
View File

@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) {
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitffaf51aaa75e8d7fc0afb2a0fce8027f::getLoader();
return ComposerAutoloaderInitce9bd5d9736aa9f6d20437d66b845038::getLoader();

View File

@ -1427,6 +1427,7 @@ return array(
'Rector\\Core\\Enum\\ObjectReference' => $baseDir . '/src/Enum/ObjectReference.php',
'Rector\\Core\\Error\\ExceptionCorrector' => $baseDir . '/src/Error/ExceptionCorrector.php',
'Rector\\Core\\Exception\\Cache\\CachingException' => $baseDir . '/src/Exception/Cache/CachingException.php',
'Rector\\Core\\Exception\\Cache\\StaleContainerCacheException' => $baseDir . '/src/Exception/Cache/StaleContainerCacheException.php',
'Rector\\Core\\Exception\\Configuration\\InvalidConfigurationException' => $baseDir . '/src/Exception/Configuration/InvalidConfigurationException.php',
'Rector\\Core\\Exception\\DeprecatedException' => $baseDir . '/src/Exception/DeprecatedException.php',
'Rector\\Core\\Exception\\NotImplementedYetException' => $baseDir . '/src/Exception/NotImplementedYetException.php',
@ -1440,6 +1441,7 @@ return array(
'Rector\\Core\\FileSystem\\FilesystemTweaker' => $baseDir . '/src/FileSystem/FilesystemTweaker.php',
'Rector\\Core\\FileSystem\\InitFilePathsResolver' => $baseDir . '/src/FileSystem/InitFilePathsResolver.php',
'Rector\\Core\\FileSystem\\PhpFilesFinder' => $baseDir . '/src/FileSystem/PhpFilesFinder.php',
'Rector\\Core\\Kernel\\CacheInvalidatingContainer' => $baseDir . '/src/Kernel/CacheInvalidatingContainer.php',
'Rector\\Core\\Kernel\\CachedContainerBuilder' => $baseDir . '/src/Kernel/CachedContainerBuilder.php',
'Rector\\Core\\Kernel\\ContainerBuilderBuilder' => $baseDir . '/src/Kernel/ContainerBuilderBuilder.php',
'Rector\\Core\\Kernel\\ContainerBuilderFactory' => $baseDir . '/src/Kernel/ContainerBuilderFactory.php',

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInitffaf51aaa75e8d7fc0afb2a0fce8027f
class ComposerAutoloaderInitce9bd5d9736aa9f6d20437d66b845038
{
private static $loader;
@ -22,17 +22,17 @@ class ComposerAutoloaderInitffaf51aaa75e8d7fc0afb2a0fce8027f
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInitffaf51aaa75e8d7fc0afb2a0fce8027f', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInitce9bd5d9736aa9f6d20437d66b845038', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInitffaf51aaa75e8d7fc0afb2a0fce8027f', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInitce9bd5d9736aa9f6d20437d66b845038', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitffaf51aaa75e8d7fc0afb2a0fce8027f::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInitce9bd5d9736aa9f6d20437d66b845038::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
$filesToLoad = \Composer\Autoload\ComposerStaticInitffaf51aaa75e8d7fc0afb2a0fce8027f::$files;
$filesToLoad = \Composer\Autoload\ComposerStaticInitce9bd5d9736aa9f6d20437d66b845038::$files;
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInitffaf51aaa75e8d7fc0afb2a0fce8027f
class ComposerStaticInitce9bd5d9736aa9f6d20437d66b845038
{
public static $files = array (
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@ -1669,6 +1669,7 @@ class ComposerStaticInitffaf51aaa75e8d7fc0afb2a0fce8027f
'Rector\\Core\\Enum\\ObjectReference' => __DIR__ . '/../..' . '/src/Enum/ObjectReference.php',
'Rector\\Core\\Error\\ExceptionCorrector' => __DIR__ . '/../..' . '/src/Error/ExceptionCorrector.php',
'Rector\\Core\\Exception\\Cache\\CachingException' => __DIR__ . '/../..' . '/src/Exception/Cache/CachingException.php',
'Rector\\Core\\Exception\\Cache\\StaleContainerCacheException' => __DIR__ . '/../..' . '/src/Exception/Cache/StaleContainerCacheException.php',
'Rector\\Core\\Exception\\Configuration\\InvalidConfigurationException' => __DIR__ . '/../..' . '/src/Exception/Configuration/InvalidConfigurationException.php',
'Rector\\Core\\Exception\\DeprecatedException' => __DIR__ . '/../..' . '/src/Exception/DeprecatedException.php',
'Rector\\Core\\Exception\\NotImplementedYetException' => __DIR__ . '/../..' . '/src/Exception/NotImplementedYetException.php',
@ -1682,6 +1683,7 @@ class ComposerStaticInitffaf51aaa75e8d7fc0afb2a0fce8027f
'Rector\\Core\\FileSystem\\FilesystemTweaker' => __DIR__ . '/../..' . '/src/FileSystem/FilesystemTweaker.php',
'Rector\\Core\\FileSystem\\InitFilePathsResolver' => __DIR__ . '/../..' . '/src/FileSystem/InitFilePathsResolver.php',
'Rector\\Core\\FileSystem\\PhpFilesFinder' => __DIR__ . '/../..' . '/src/FileSystem/PhpFilesFinder.php',
'Rector\\Core\\Kernel\\CacheInvalidatingContainer' => __DIR__ . '/../..' . '/src/Kernel/CacheInvalidatingContainer.php',
'Rector\\Core\\Kernel\\CachedContainerBuilder' => __DIR__ . '/../..' . '/src/Kernel/CachedContainerBuilder.php',
'Rector\\Core\\Kernel\\ContainerBuilderBuilder' => __DIR__ . '/../..' . '/src/Kernel/ContainerBuilderBuilder.php',
'Rector\\Core\\Kernel\\ContainerBuilderFactory' => __DIR__ . '/../..' . '/src/Kernel/ContainerBuilderFactory.php',
@ -3107,9 +3109,9 @@ class ComposerStaticInitffaf51aaa75e8d7fc0afb2a0fce8027f
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitffaf51aaa75e8d7fc0afb2a0fce8027f::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitffaf51aaa75e8d7fc0afb2a0fce8027f::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitffaf51aaa75e8d7fc0afb2a0fce8027f::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInitce9bd5d9736aa9f6d20437d66b845038::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitce9bd5d9736aa9f6d20437d66b845038::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitce9bd5d9736aa9f6d20437d66b845038::$classMap;
}, null, ClassLoader::class);
}