aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarcel Klehr <mklehr@gmx.net>2025-01-23 10:40:42 +0100
committerAndy Scherzinger <info@andy-scherzinger.de>2025-01-27 21:13:16 +0100
commit69bd52522307e9afd5db43eb33815158b40d7323 (patch)
treea15e30738fa055bc3c1d5c6afaed17381c3d9761 /lib
parentaf8d0aee76bdd31a9bcb0ff6f5990b5a70e21e5c (diff)
downloadnextcloud-server-69bd52522307e9afd5db43eb33815158b40d7323.tar.gz
nextcloud-server-69bd52522307e9afd5db43eb33815158b40d7323.zip
fix(taskprocessing): cache provider settings in distributed cache as well
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Diffstat (limited to 'lib')
-rw-r--r--lib/private/TaskProcessing/Manager.php11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/private/TaskProcessing/Manager.php b/lib/private/TaskProcessing/Manager.php
index f3ed7e51dfb..7a49171ace2 100644
--- a/lib/private/TaskProcessing/Manager.php
+++ b/lib/private/TaskProcessing/Manager.php
@@ -81,6 +81,7 @@ class Manager implements IManager {
private IAppData $appData;
private ?array $preferences = null;
private ICache $cache;
+ private ICache $distributedCache;
public function __construct(
private IConfig $config,
@@ -100,6 +101,7 @@ class Manager implements IManager {
) {
$this->appData = $appDataFactory->get('core');
$this->cache = $cacheFactory->createLocal('task_processing::');
+ $this->cache = $cacheFactory->createDistributed('task_processing::');
}
@@ -705,7 +707,14 @@ class Manager implements IManager {
public function getPreferredProvider(string $taskTypeId) {
try {
- $this->preferences = $this->preferences ?? json_decode($this->config->getAppValue('core', 'ai.taskprocessing_provider_preferences', 'null'), associative: true, flags: JSON_THROW_ON_ERROR);
+ if ($this->preferences === null) {
+ $this->preferences = $this->distributedCache->get('ai.taskprocessing_provider_preferences');
+ if ($this->preferences === null) {
+ $this->preferences = json_decode($this->config->getAppValue('core', 'ai.taskprocessing_provider_preferences', 'null'), associative: true, flags: JSON_THROW_ON_ERROR);
+ $this->distributedCache->set('ai.taskprocessing_provider_preferences', $this->preferences, 60 * 3);
+ }
+ }
+
$providers = $this->getProviders();
if (isset($this->preferences[$taskTypeId])) {
$provider = current(array_values(array_filter($providers, fn ($provider) => $provider->getId() === $this->preferences[$taskTypeId])));