From ec3660a3c28ae5690a0f9b6c8f91b01f150bed39 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 4 Feb 2025 12:40:37 +0100 Subject: [PATCH 1/3] fix(TaskProcessing\Manager): Always use distributed cache and use PHP serialize Signed-off-by: Marcel Klehr --- lib/private/TaskProcessing/Manager.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index cb2434422aa..cdd9e909960 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -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); } From f9450f2d2064f8625b8b04ff7cec5739d3fd8559 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 4 Feb 2025 13:03:59 +0100 Subject: [PATCH 2/3] fix: lib/private/TaskProcessing/Manager.php Co-authored-by: Julien Veyssier Signed-off-by: Marcel Klehr --- lib/private/TaskProcessing/Manager.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index cdd9e909960..c63ff8f7ebb 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -765,8 +765,10 @@ class Manager implements IManager { } public function getAvailableTaskTypes(bool $showDisabled = false): array { - if ($this->availableTaskTypes === null && $this->distributedCache->get('available_task_types_v2') !== null) { - $this->availableTaskTypes = unserialize($this->distributedCache->get('available_task_types_v2')); + if ($this->availableTaskTypes === null) { + $cachedValue = $this->distributedCache->get('available_task_types_v2'); + if ($cachedValue !== null) { + $this->availableTaskTypes = unserialize($cachedValue); } // Either we have no cache or showDisabled is turned on, which we don't want to cache, ever. if ($this->availableTaskTypes === null || $showDisabled) { From 75585be67f7c8e4164339463a84cdb2d4e965ed6 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 4 Feb 2025 13:04:43 +0100 Subject: [PATCH 3/3] fix(TaskProcessing\Manager): Always use distributed cache and use PHP serialize Signed-off-by: Marcel Klehr --- lib/private/TaskProcessing/Manager.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php index c63ff8f7ebb..0c8d2414448 100644 --- a/lib/private/TaskProcessing/Manager.php +++ b/lib/private/TaskProcessing/Manager.php @@ -769,6 +769,7 @@ class Manager implements IManager { $cachedValue = $this->distributedCache->get('available_task_types_v2'); if ($cachedValue !== null) { $this->availableTaskTypes = unserialize($cachedValue); + } } // Either we have no cache or showDisabled is turned on, which we don't want to cache, ever. if ($this->availableTaskTypes === null || $showDisabled) {