fix(TaskProcessing\Manager): Always use distributed cache and use PHP serialize

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
This commit is contained in:
Marcel Klehr 2025-02-04 12:40:37 +01:00
parent 9223794d49
commit 49a52126ab

View file

@ -81,7 +81,6 @@ class Manager implements IManager {
private IAppData $appData;
private ?array $preferences = null;
private ?array $providersById = null;
private ICache $cache;
private ICache $distributedCache;
public function __construct(
@ -101,7 +100,6 @@ class Manager implements IManager {
ICacheFactory $cacheFactory,
) {
$this->appData = $appDataFactory->get('core');
$this->cache = $cacheFactory->createLocal('task_processing::');
$this->distributedCache = $cacheFactory->createDistributed('task_processing::');
}
@ -767,9 +765,8 @@ class Manager implements IManager {
}
public function getAvailableTaskTypes(bool $showDisabled = false): array {
if ($this->availableTaskTypes === null) {
// We use local cache only because distributed cache uses JSOn stringify which would botch our ShapeDescriptor objects
$this->availableTaskTypes = $this->cache->get('available_task_types');
if ($this->availableTaskTypes === null && $this->distributedCache->get('available_task_types_v2') !== null) {
$this->availableTaskTypes = unserialize($this->distributedCache->get('available_task_types_v2'));
}
// Either we have no cache or showDisabled is turned on, which we don't want to cache, ever.
if ($this->availableTaskTypes === null || $showDisabled) {
@ -812,7 +809,7 @@ class Manager implements IManager {
}
$this->availableTaskTypes = $availableTaskTypes;
$this->cache->set('available_task_types', $this->availableTaskTypes, 60);
$this->distributedCache->set('available_task_types_v2', serialize($this->availableTaskTypes), 60);
}