diff options
author | Morris Jobke <hey@morrisjobke.de> | 2020-10-15 16:59:21 +0300 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2020-10-16 19:28:54 +0300 |
commit | afeafd91a45dc282641612907c6689c1b8b66bd2 (patch) | |
tree | 1c48b6434001bf905f52e4aa070134f52d7d3393 | |
parent | 20043ac4014c97b36daaa7d834ce9cc4974b93c2 (diff) |
Clear cached app config while waiting for the SCSSCache to finish processing the file
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
-rw-r--r-- | lib/private/AppConfig.php | 10 | ||||
-rw-r--r-- | lib/private/Server.php | 3 | ||||
-rw-r--r-- | lib/private/Template/SCSSCacher.php | 8 | ||||
-rw-r--r-- | tests/lib/Template/CSSResourceLocatorTest.php | 7 | ||||
-rw-r--r-- | tests/lib/Template/SCSSCacherTest.php | 8 |
5 files changed, 32 insertions, 4 deletions
diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php index e562870aa7f..1d4a9a5614b 100644 --- a/lib/private/AppConfig.php +++ b/lib/private/AppConfig.php @@ -342,4 +342,14 @@ class AppConfig implements IAppConfig { $this->configLoaded = true; } + + /** + * Clear all the cached app config values + * + * WARNING: do not use this - this is only for usage with the SCSSCacher to + * clear the memory cache of the app config + */ + public function clearCachedConfig() { + $this->configLoaded = false; + } } diff --git a/lib/private/Server.php b/lib/private/Server.php index 400389177e4..928ce118c32 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -1096,7 +1096,8 @@ class Server extends ServerContainer implements IServerContainer { \OC::$SERVERROOT, $this->getMemCacheFactory(), $c->query(IconsCacher::class), - new TimeFactory() + new TimeFactory(), + $c->query(AppConfig::class) ); }); $this->registerService(JSCombiner::class, function (Server $c) { diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php index 9be8cb7b59d..a6c371fb715 100644 --- a/lib/private/Template/SCSSCacher.php +++ b/lib/private/Template/SCSSCacher.php @@ -33,6 +33,7 @@ use Leafo\ScssPhp\Compiler; use Leafo\ScssPhp\Exception\ParserException; use Leafo\ScssPhp\Formatter\Crunched; use Leafo\ScssPhp\Formatter\Expanded; +use OC\AppConfig; use OC\Files\AppData\Factory; use OC\Memcache\NullCache; use OC\Template\IconsCacher; @@ -89,6 +90,8 @@ class SCSSCacher { /** @var IMemcache */ private $lockingCache; + /** @var AppConfig */ + private $appConfig; /** * @param ILogger $logger @@ -109,7 +112,8 @@ class SCSSCacher { $serverRoot, ICacheFactory $cacheFactory, IconsCacher $iconsCacher, - ITimeFactory $timeFactory) { + ITimeFactory $timeFactory, + AppConfig $appConfig) { $this->logger = $logger; $this->appData = $appDataFactory->get('css'); $this->urlGenerator = $urlGenerator; @@ -126,6 +130,7 @@ class SCSSCacher { $this->lockingCache = $lockingCache; $this->iconsCacher = $iconsCacher; $this->timeFactory = $timeFactory; + $this->appConfig = $appConfig; } /** @@ -166,6 +171,7 @@ class SCSSCacher { $retry = 0; sleep(1); while ($retry < 10) { + $this->appConfig->clearCachedConfig(); $this->logger->debug('SCSSCacher::process check in while loop follows', ['app' => 'scss_cacher']); if (!$this->variablesChanged() && $this->isCached($fileNameCSS, $app)) { // Inject icons vars css if any diff --git a/tests/lib/Template/CSSResourceLocatorTest.php b/tests/lib/Template/CSSResourceLocatorTest.php index 47f3347bb6f..c89ebfe70fc 100644 --- a/tests/lib/Template/CSSResourceLocatorTest.php +++ b/tests/lib/Template/CSSResourceLocatorTest.php @@ -23,6 +23,7 @@ namespace Test\Template; +use OC\AppConfig; use OC\Files\AppData\AppData; use OC\Files\AppData\Factory; use OC\Template\CSSResourceLocator; @@ -53,6 +54,8 @@ class CSSResourceLocatorTest extends \Test\TestCase { protected $iconsCacher; /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */ private $timeFactory; + /** @var AppConfig|\PHPUnit\Framework\MockObject\MockObject */ + private $appConfig; protected function setUp(): void { parent::setUp(); @@ -65,6 +68,7 @@ class CSSResourceLocatorTest extends \Test\TestCase { $this->themingDefaults = $this->createMock(ThemingDefaults::class); $this->iconsCacher = $this->createMock(IconsCacher::class); $this->timeFactory = $this->createMock(ITimeFactory::class); + $this->appConfig = $this->createMock(AppConfig::class); } private function cssResourceLocator() { @@ -80,7 +84,8 @@ class CSSResourceLocatorTest extends \Test\TestCase { \OC::$SERVERROOT, $this->cacheFactory, $this->iconsCacher, - $this->timeFactory + $this->timeFactory, + $this->appConfig ); return new CSSResourceLocator( $this->logger, diff --git a/tests/lib/Template/SCSSCacherTest.php b/tests/lib/Template/SCSSCacherTest.php index 6f9fdf1e7fb..58941b8fdcc 100644 --- a/tests/lib/Template/SCSSCacherTest.php +++ b/tests/lib/Template/SCSSCacherTest.php @@ -23,6 +23,7 @@ namespace Test\Template; +use OC\AppConfig; use OC\Files\AppData\AppData; use OC\Files\AppData\Factory; use OC\Template\IconsCacher; @@ -61,6 +62,8 @@ class SCSSCacherTest extends \Test\TestCase { protected $iconsCacher; /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */ protected $timeFactory; + /** @var AppConfig|\PHPUnit\Framework\MockObject\MockObject */ + protected $appConfig; protected function setUp(): void { parent::setUp(); @@ -93,6 +96,8 @@ class SCSSCacherTest extends \Test\TestCase { ->method('getCachedCSS') ->willReturn($iconsFile); + $this->appConfig = $this->createMock(AppConfig::class); + $this->scssCacher = new SCSSCacher( $this->logger, $factory, @@ -102,7 +107,8 @@ class SCSSCacherTest extends \Test\TestCase { \OC::$SERVERROOT, $this->cacheFactory, $this->iconsCacher, - $this->timeFactory + $this->timeFactory, + $this->appConfig ); } |