Skip to content

Commit 9d00f56

Browse files
committed
feat(settings): add setup check for redis memcache
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
1 parent d0fec0b commit 9d00f56

4 files changed

Lines changed: 63 additions & 0 deletions

File tree

apps/settings/composer/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
'OCA\\Settings\\SetupChecks\\LoggingLevel' => $baseDir . '/../lib/SetupChecks/LoggingLevel.php',
112112
'OCA\\Settings\\SetupChecks\\MaintenanceWindowStart' => $baseDir . '/../lib/SetupChecks/MaintenanceWindowStart.php',
113113
'OCA\\Settings\\SetupChecks\\MemcacheConfigured' => $baseDir . '/../lib/SetupChecks/MemcacheConfigured.php',
114+
'OCA\\Settings\\SetupChecks\\MemcacheLegacy' => $baseDir . '/../lib/SetupChecks/MemcacheLegacy.php',
114115
'OCA\\Settings\\SetupChecks\\MimeTypeMigrationAvailable' => $baseDir . '/../lib/SetupChecks/MimeTypeMigrationAvailable.php',
115116
'OCA\\Settings\\SetupChecks\\MysqlRowFormat' => $baseDir . '/../lib/SetupChecks/MysqlRowFormat.php',
116117
'OCA\\Settings\\SetupChecks\\MysqlUnicodeSupport' => $baseDir . '/../lib/SetupChecks/MysqlUnicodeSupport.php',

apps/settings/composer/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ class ComposerStaticInitSettings
126126
'OCA\\Settings\\SetupChecks\\LoggingLevel' => __DIR__ . '/..' . '/../lib/SetupChecks/LoggingLevel.php',
127127
'OCA\\Settings\\SetupChecks\\MaintenanceWindowStart' => __DIR__ . '/..' . '/../lib/SetupChecks/MaintenanceWindowStart.php',
128128
'OCA\\Settings\\SetupChecks\\MemcacheConfigured' => __DIR__ . '/..' . '/../lib/SetupChecks/MemcacheConfigured.php',
129+
'OCA\\Settings\\SetupChecks\\MemcacheLegacy' => __DIR__ . '/..' . '/../lib/SetupChecks/MemcacheLegacy.php',
129130
'OCA\\Settings\\SetupChecks\\MimeTypeMigrationAvailable' => __DIR__ . '/..' . '/../lib/SetupChecks/MimeTypeMigrationAvailable.php',
130131
'OCA\\Settings\\SetupChecks\\MysqlRowFormat' => __DIR__ . '/..' . '/../lib/SetupChecks/MysqlRowFormat.php',
131132
'OCA\\Settings\\SetupChecks\\MysqlUnicodeSupport' => __DIR__ . '/..' . '/../lib/SetupChecks/MysqlUnicodeSupport.php',

apps/settings/lib/AppInfo/Application.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
use OCA\Settings\SetupChecks\LegacySSEKeyFormat;
5050
use OCA\Settings\SetupChecks\MaintenanceWindowStart;
5151
use OCA\Settings\SetupChecks\MemcacheConfigured;
52+
use OCA\Settings\SetupChecks\MemcacheLegacy;
5253
use OCA\Settings\SetupChecks\MimeTypeMigrationAvailable;
5354
use OCA\Settings\SetupChecks\MysqlRowFormat;
5455
use OCA\Settings\SetupChecks\MysqlUnicodeSupport;
@@ -193,6 +194,7 @@ public function register(IRegistrationContext $context): void {
193194
$context->registerSetupCheck(LegacySSEKeyFormat::class);
194195
$context->registerSetupCheck(MaintenanceWindowStart::class);
195196
$context->registerSetupCheck(MemcacheConfigured::class);
197+
$context->registerSetupCheck(MemcacheLegacy::class);
196198
$context->registerSetupCheck(MimeTypeMigrationAvailable::class);
197199
$context->registerSetupCheck(MysqlRowFormat::class);
198200
$context->registerSetupCheck(MysqlUnicodeSupport::class);
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
7+
* SPDX-License-Identifier: AGPL-3.0-or-later
8+
*/
9+
10+
namespace OCA\Settings\SetupChecks;
11+
12+
use OC\Memcache\Redis;
13+
use OCP\IConfig;
14+
use OCP\IL10N;
15+
use OCP\IURLGenerator;
16+
use OCP\SetupCheck\ISetupCheck;
17+
use OCP\SetupCheck\SetupResult;
18+
19+
class MemcacheLegacy implements ISetupCheck {
20+
public function __construct(
21+
private readonly IL10N $l10n,
22+
private readonly IConfig $config,
23+
private readonly IURLGenerator $urlGenerator,
24+
) {
25+
}
26+
27+
#[\Override]
28+
public function getName(): string {
29+
return $this->l10n->t('Redis cache');
30+
}
31+
32+
#[\Override]
33+
public function getCategory(): string {
34+
return 'system';
35+
}
36+
37+
#[\Override]
38+
public function run(): SetupResult {
39+
if ($this->isLegacyRedisUsed()) {
40+
return SetupResult::info(
41+
$this->l10n->t('You are still using the old Redis cache backend. For full support of latest Valkey and Redis features, like clustering and sentinel, please switch to the new KeyValueCache backend.'),
42+
$this->urlGenerator->linkToDocs('admin-cache')
43+
);
44+
} else {
45+
return SetupResult::success($this->l10n->t('No legacy Redis cache detected'));
46+
}
47+
}
48+
49+
protected function isLegacyRedisUsed(): bool {
50+
$memcacheDistributedClass = $this->config->getSystemValue('memcache.distributed', null);
51+
$memcacheLockingClass = $this->config->getSystemValue('memcache.locking', null);
52+
53+
/** @psalm-suppress DeprecatedClass */
54+
if ($memcacheDistributedClass === Redis::class || $memcacheLockingClass === Redis::class) {
55+
return true;
56+
}
57+
return false;
58+
}
59+
}

0 commit comments

Comments
 (0)