Migrate distributed cache config value

This commit is contained in:
Philipp 2021-12-14 10:14:24 +01:00
parent b4c1fb0d9c
commit 6ca5668ac1
No known key found for this signature in database
GPG key ID: 24A7501396EB5432
5 changed files with 37 additions and 7 deletions

View file

@ -1,6 +1,6 @@
-- ------------------------------------------
-- Friendica 2021.12-rc (Siberian Iris)
-- DB_UPDATE_VERSION 1445
-- DB_UPDATE_VERSION 1446
-- ------------------------------------------

View file

@ -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);

View file

@ -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
*

View file

@ -55,7 +55,7 @@
use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) {
define('DB_UPDATE_VERSION', 1445);
define('DB_UPDATE_VERSION', 1446);
}
return [

View file

@ -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;
}