Commit Graph

107 Commits

Author SHA1 Message Date
Côme Chilliet 32f8ff2445 fix: Remove uses of deprecated service string names
Use the class/interface name instead to avoid logging.
This was breaking in some cases as logging would trigger a deprecation
 warning, resulting in an infinite loop.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-22 11:19:00 +02:00
Côme Chilliet 256c449d62 chore: Get cache lazily in OC\Memcache\Redis
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-02 09:46:20 +02:00
Côme Chilliet 2aeac5ed7c fix: Add a factory for Memcached object instead of a static var
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-02 09:46:17 +02:00
Côme Chilliet c3db7fa0e8 fix: Remove static var in Memcache/Redis
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-02 09:46:03 +02:00
Côme Chilliet 1ab09ec753 chore: Apply new coding standard to all files
The diff can be checked using: git diff --ignore-all-space --ignore-blank-lines
To see only the changes not related to blank lines.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-01 13:46:39 +02:00
Ferdinand Thiessen e0ba4d71b6 chore: add missing Override attribute to OC
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-28 21:29:27 +02:00
Martin 2a2f42e781 feat: Add memcache_customprefix
Signed-off-by: Martin <31348196+Earl0fPudding@users.noreply.github.com>
2026-03-04 00:19:19 +01:00
provokateurin f12cecb684 feat(rector): Enable SafeDeclareStrictTypesRector
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-02-09 10:59:31 +01:00
Carl Schwan 3979c493f9 refactor: Apply second batch of comments
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2026-02-06 13:52:51 +01:00
Carl Schwan 7b6078875b refactor: Run rector on lib/private
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2026-02-06 13:50:18 +01:00
Ferdinand Thiessen 15229e0b4e fix(Memcache): use different cache key when in maintenance mode
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-01 14:43:23 +01:00
Ferdinand Thiessen b4d19748fa fix(Memcache): ensure global prefix depends on enabled apps
- ensure the prefix is changed when an app is (dis)enabled
- ensure the app ids are included in the hash instead of only the
  version numbers
- ensure hash is deterministic by always use the same order.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-27 16:18:24 +01:00
Marcel Müller 34a085d3bf fix(cache): Ensure unique global prefix per instanceid
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-09-28 17:59:12 +02:00
Ferdinand Thiessen 660f3f6fd1 refactor: use logical && || instead of weak and or operators
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-09-27 23:02:18 +02:00
Ferdinand Thiessen 112178d3a0 fix: typos in cache and app config
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-08-18 18:35:54 +02:00
Ferdinand Thiessen 0ef58c96ab refactor(Memcache\Factory): move prefix generation to the factory class
This removes a circular dependency between AppConfig and cache factory.
When a cache in the app config is used.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-08-18 13:24:18 +02:00
Ferdinand Thiessen 5981b7eb51 chore: apply new CSFixer rules
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>

# Conflicts:
#	apps/settings/lib/SetupChecks/PhpOpcacheSetup.php
2025-07-01 16:26:50 +02:00
John Molakvoæ 2d5060d1e3 Merge pull request #46151 from nextcloud/enh/do-not-enforce-cache-for-cli
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (8.1, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (8.1, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
2024-10-29 15:28:47 +01:00
provokateurin 9836e9b164 chore(deps): Update nextcloud/coding-standard to v1.3.1
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-19 14:21:20 +02:00
Robin Appelman da59fd4389 fix: misc code fixes around db sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-09-09 16:59:59 +02:00
Robin Appelman c58bdbf378 fix: delay calculating global cache prefix untill a cache is created
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:18:52 +02:00
Daniel Kesselberg af6de04e9e style: update codestyle for coding-standard 1.2.3
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:34:58 +02:00
Robin Appelman 20dbb6c7e8 feat: add negative compare-and-delete to imemcache
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 19:34:28 +02:00
Robin Appelman cae0a8218d chore: remove Redis::DEFAULT_TTL constant now that it's defined in the interface
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-07 19:41:44 +02:00
Robin Appelman b19652a2ad chore: cleanup acpu inc and dec
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-07 19:41:43 +02:00
Robin Appelman cd9cc01b77 fix: set default TTL for APCu cache as per docs
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-07 19:41:41 +02:00
MichaIng 89cd3b4f88 feat(cache): CLI should not fail if APCu is not available
but fallback to NullCache. This can be the case if APCu is used without apc.enable_cli=1. APCu however runs within the PHP instance and hence cannot be shared between CLI and web or used as distributed cache. The CLI call can hence only create or invalidate entries for itself. For short-living CLI calls, this is theoretically a downsides regarding performance and resource usage, and Nextcloud must not have any issues using the dummy NullCache instead of an isolated freshly created and destroyed APCu instance.

This partly reverts https://github.com/nextcloud/server/pull/25770. The fallback was removed, because CLI calls started to hang after https://github.com/nextcloud/server/pull/25440. The reason however was not that a cache is generally required for CLI calls, but because the previously logged warning invoked the user backend, which invoked again the caching backend, causing a loop.

This commit re-adds the fallback without logging a warning, and for APCu only. For mentioned reasons, it is okay to fallback to NullCache silently. If Redis or memcached are configured but not available, then the web UI would fail as well, and it makes sense to abort and inform CLI calls as well then.

The motivation is to make apc.enable_cli=1 optional, and that hence the documentation about it can be removed. We should not enforce admins to enable APCu for CLI calls, which is reasonably disabled by default. This also reduces requirements for hosting providers to support Nextcloud.

Signed-off-by: MichaIng <micha@dietpi.com>
2024-08-01 10:02:44 +02:00
Andy Scherzinger dae7c159f7 chore: Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-05-24 13:11:22 +02:00
Velwark 535d5de037 Update LoggerWrapperCache.php
Extra Dollar Sign caused errors in Nextcloud. Removing the Dollar Sign Solved the Problem.

Signed-off-by: Velwark <levinfrerich9@gmail.com>
2024-04-23 09:54:44 +02:00
Côme Chilliet ec5133b739 fix: Apply new coding standard to all files
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-04-02 14:16:21 +02:00
Andrew Summers c0f12d7691 Refactor OC\Server::getGetRedisFactory
Signed-off-by: Andrew Summers <18727110+summersab@users.noreply.github.com>
2024-03-15 13:11:40 +01:00
Robin Appelman cc3c7c24a1 set a default and max ttl for redis keys
having infinite TTL can lead to leaked keys as the prefix changes with version upgrades

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-02-23 15:41:51 +01:00
Côme Chilliet f73f966c98 chore: Add missing ArrayAccess template parameters
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-02-06 10:24:41 +01:00
Robin Appelman ff62154a79 adjust redis compareSetTTL to use a lua script
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-12-21 15:14:27 +01:00
Robin Appelman 7394645eb7 restore shared lock ttl when releasing
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-12-21 15:14:27 +01:00
Joas Schilling aa5f037af7 chore: apply changes from Nextcloud coding standards 1.1.1
Signed-off-by: Joas Schilling <coding@schilljs.com>
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2023-11-23 10:36:13 +01:00
Christoph Wurst ff672b11e2 feat: Add factory method for in-memory caches
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2023-10-11 13:37:22 +02:00
Christoph Wurst fac05bce07 chore: Drop unused \OC\Memcache\Factory::createLowLatency
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2023-10-11 09:40:27 +02:00
Joas Schilling 93f0399a92 fix(memcache): Fix comparison of Memcache configs to classes
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-08-16 16:05:50 +02:00
Daniel Kesselberg 7cab58237d chore: remove version check for apc extension
APC is gone since PHP 7.0.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2023-08-10 15:02:19 +02:00
Robin Appelman 9f1d497a0b Merge pull request #38261 from fsamapoor/replace_strpos_calls_in_lib_private
Refactors "strpos" calls in  lib/private to improve code readability.
2023-06-01 23:10:00 +02:00
Faraz Samapoor e7cc7653b8 Refactors "strpos" calls in lib/private to improve code readability.
Signed-off-by: Faraz Samapoor <fsamapoor@gmail.com>
2023-05-15 15:17:19 +03:30
Varun Patil c6cee282b3 redis: move lua scripts to class and add type hints
Signed-off-by: Varun Patil <varunpatil@ucla.edu>
2023-05-10 17:37:02 -07:00
Varun Patil 39e805fffa redis: use atomic operations everywhere
This removes a lot of acrobatics in the code and does each operation
atomically using a lua script. This also reduces several round trips
to the server, and the scripts are compiled and cached server-side.

Notably, since all operations work only on a single key (except clear,
which is broken anyway and shouldn't be used), they will continue to
function and be atomic for Redis cluster.

Signed-off-by: Varun Patil <varunpatil@ucla.edu>
2023-04-16 14:38:56 -07:00
Git'Fellow c81ea3aa98 Fix RedisCluster
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2023-03-22 17:19:07 +01:00
Git'Fellow fab390f884 Move from DEL to UNLINK
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2023-03-22 17:10:05 +01:00
Robin Appelman 853ec60f3e also cache backend for user in memory instead of always going to redis
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-02-10 12:25:23 +01:00
Côme Chilliet f5c361cf44 composer run cs:fix
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2023-01-20 11:45:08 +01:00
Julius Härtl 023b80e617 Only setup redis connection if needed
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-11-22 09:26:24 +01:00
Côme Chilliet 826e234ecf Correctly handle Redis::keys returning false
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-09-29 14:41:53 +02:00