From 6ca5668ac1508ca5170949898e186d923a98d973 Mon Sep 17 00:00:00 2001 From: Philipp Date: Tue, 14 Dec 2021 10:14:24 +0100 Subject: [PATCH] Migrate distributed cache config value --- database.sql | 2 +- src/Core/Config/Util/ConfigFileLoader.php | 4 ++-- src/Core/Config/ValueObject/Cache.php | 21 ++++++++++++++++++--- static/dbstructure.config.php | 2 +- update.php | 15 +++++++++++++++ 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/database.sql b/database.sql index bdf928fbe..d1c73cc04 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2021.12-rc (Siberian Iris) --- DB_UPDATE_VERSION 1445 +-- DB_UPDATE_VERSION 1446 -- ------------------------------------------ diff --git a/src/Core/Config/Util/ConfigFileLoader.php b/src/Core/Config/Util/ConfigFileLoader.php index 7740ec326..853e79214 100644 --- a/src/Core/Config/Util/ConfigFileLoader.php +++ b/src/Core/Config/Util/ConfigFileLoader.php @@ -96,8 +96,8 @@ class ConfigFileLoader public function setupCache(Cache $config, array $server = [], bool $raw = false) { // Load static config files first, the order is important - $config->load($this->loadStaticConfig('defaults'), Cache::SOURCE_FILE); - $config->load($this->loadStaticConfig('settings'), Cache::SOURCE_FILE); + $config->load($this->loadStaticConfig('defaults'), Cache::SOURCE_STATIC); + $config->load($this->loadStaticConfig('settings'), Cache::SOURCE_STATIC); // try to load the legacy config first $config->load($this->loadLegacyConfig('htpreconfig'), Cache::SOURCE_FILE); diff --git a/src/Core/Config/ValueObject/Cache.php b/src/Core/Config/ValueObject/Cache.php index e92bccea4..1a176d160 100644 --- a/src/Core/Config/ValueObject/Cache.php +++ b/src/Core/Config/ValueObject/Cache.php @@ -31,14 +31,16 @@ use ParagonIE\HiddenString\HiddenString; */ class Cache { + /** @var int Indicates that the cache entry is a default value - Lowest Priority */ + const SOURCE_STATIC = 0; /** @var int Indicates that the cache entry is set by file - Low Priority */ - const SOURCE_FILE = 0; + const SOURCE_FILE = 1; /** @var int Indicates that the cache entry is set by the DB config table - Middle Priority */ - const SOURCE_DB = 1; + const SOURCE_DB = 2; /** @var int Indicates that the cache entry is set by a server environment variable - High Priority */ const SOURCE_ENV = 3; /** @var int Indicates that the cache entry is fixed and must not be changed */ - const SOURCE_FIX = 4; + const SOURCE_FIX = 5; /** @var int Default value for a config source */ const SOURCE_DEFAULT = self::SOURCE_FILE; @@ -113,6 +115,19 @@ class Cache } } + /** + * Returns the source value of the current, cached config value + * + * @param string $cat Config category + * @param string $key Config key + * + * @return int + */ + public function getSource(string $cat, string $key): int + { + return $this->source[$cat][$key] ?? -1; + } + /** * Sets a value in the config cache. Accepts raw output from the config table * diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index e0645c05e..1c3b296ca 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1445); + define('DB_UPDATE_VERSION', 1446); } return [ diff --git a/update.php b/update.php index 81e5be8d6..82351a7b2 100644 --- a/update.php +++ b/update.php @@ -1070,3 +1070,18 @@ function update_1444() return Update::SUCCESS; } + +function update_1446() +{ + $distributed_cache_driver_source = DI::config()->getCache()->getSource('system', 'distributed_cache_driver'); + $cache_driver_source = DI::config()->getCache()->getSource('system', 'cache_driver'); + + // In case the distributed cache driver is the default value, but the current cache driver isn't default, + // we assume that the distributed cache driver should be the same as the current cache driver + if ($distributed_cache_driver_source === \Friendica\Core\Config\ValueObject\Cache::SOURCE_STATIC && + $cache_driver_source !== \Friendica\Core\Config\ValueObject\Cache::SOURCE_STATIC) { + DI::config()->set('system', 'distributed_cache_driver', DI::config()->get('system', 'cache_driver')); + } + + return Update::SUCCESS; +} \ No newline at end of file