92 Commits

Author SHA1 Message Date
Robin Appelman 05d9fe3916 perf: only load possible results in UserMountCache::getMountForPath
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-28 15:49:40 +02:00
Robin Appelman 82ce6f567a perf: only load a single mount at a time when checking for share conflicts
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-28 15:49:39 +02:00
Robin Appelman 0d717bd0be fix: add optional user param to IUserMountCache::removeMount
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-28 15:49:36 +02:00
Louis 48e3e15c9f Revert "[stable33] Revert "Stable33 authoritative share""
Signed-off-by: Louis <louis@chmn.me>
2026-04-28 15:49:33 +02:00
Robin Appelman 2070e76425 fix: use proper index when deleting mounts
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-23 23:57:55 +00:00
Tobias Kaminsky 1d176c03c3 Revert "[stable33] Stable33 authoritative share" 2026-03-24 16:41:26 +01:00
Robin Appelman 41825529e7 fix: clear in-memory cached mounts for user when adding/removing mounts
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-19 18:39:36 +01:00
Robin Appelman ffa6784bba feat: perform share mount validation on share instead of on mount
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-19 18:39:35 +01:00
ailkiv f00e6d471f fix: PostgreSQL transaction aborts when caching user mounts
Signed-off-by: ailkiv <a.ilkiv.ye@gmail.com>
2026-03-12 11:20:29 +00:00
Robin Appelman 27e63dd6b2 fix: fix updating cached mounts with multiple entries for root id
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-03-05 14:26:28 +01:00
Andy Scherzinger 4e3f0b5a2a Merge pull request #57912 from nextcloud/backport/57815/stable33
[stable33] feat: optimize user mount cache
2026-01-29 20:56:45 +01:00
Robin Appelman e00b60b89c fix: make getMountsForFileId work with sharding again
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-29 17:06:57 +01:00
Benjamin Gaussorgues 9590a7b801 feat: optimize user mount cache
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-29 15:36:39 +00:00
Carl Schwan fb2dbf0af4 perf(UserMountCache): Invert condition so that we avoid some SQL queries
getStorageId creates some SQL queries, while the other queries don't, so
compare that last.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-29 10:13:51 +00:00
Stephan Orbaugh 3a9173015c Merge pull request #57525 from nextcloud/carl/usermountcache-loop-optimization
perf(UserMountCache): Optimize loop
2026-01-16 10:50:27 +01:00
Carl Schwan 94dd919b88 perf(UserMountCache): Optimize loop
These loops since to be called around 60 000 times in one trace I saw.
So it makes sense to use the faster foreach construct.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-13 18:37:51 +01:00
Robin Appelman 9dffca2f07 fix: improve handling of unavailable storages
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:52 +01:00
Robin Appelman e3551e576c feat: add api for authoritative mount providers to update the user mounts
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-09 17:53:48 +01:00
provokateurin 341fd348e6 fix(UserMountCache): Add back unique index for oc_mounts and use normal insert
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-12-15 12:26:23 +01:00
Benjamin Gaussorgues 39e2e70084 feat(mounts): optimize load of mounts by filtering on database side
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2025-08-26 08:55:24 +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
provokateurin 6818aa9b12 feat(UserMountCache): Emit events for added, removed and updated mounts
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-19 13:54:51 +02:00
Robin Appelman c3f06b370c feat: add debug logging for adding/removing items from the user mounts cache
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-03 17:58:46 +02:00
Git'Fellow a1681b0756 chore(db): Apply query prepared statements
Fix: psalm

fix: bad file

fix: bug

chore: add batch

chore: add batch

chore: add batch

fix: psalm
2024-10-17 20:30:47 +02: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
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 eb4fb994cf fix: ensure array returned from getMountsForFileId is continious
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-02 17:22:33 +02:00
Robin Appelman 0931492ff0 fix: make usermountcache compatible with sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-17 19:16:05 +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
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
Joas Schilling 951c330d39 Revert "don't perform an explicit setup when using the file cache" 2024-03-07 14:38:02 +01:00
John Molakvoæ b7088e7071 Merge pull request #32163 from nextcloud/file-cache-gc-no-full-setup
don't perform an explicit setup when using the file cache
2024-03-07 11:09:19 +01:00
Robin Appelman 4fba4cd14c fix: fix user folder init
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-03-06 17:52:24 +01:00
Robin Appelman 51019fda7a fix: clearify logic around getMountsForFileId filtering
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-03-06 10:54:00 +01:00
Robin Appelman e33b32095e Revert "Filter mounts for file id before trying to get user information"
This reverts commit 1e2cf820c8.

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-03-06 10:54:00 +01:00
Robin Appelman 9ea3f4ab8f perf: use lazy user in UserMountCache for getting user for cached mount
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-03-06 10:53:55 +01:00
Robin Appelman 963721330f only get the path for the users cached mount info when we use it
most of the time we shouldn't need it so we can save joining on the filecache

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-02-09 09:50:43 +01:00
Robin Appelman b942850af9 optimize UserMountCache::registerStorage
Signed-off-by: Robin Appelman <robin@icewind.nl>
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2023-11-16 16:21:59 +01:00
Jonas 7441ce2b11 enh(IMountManager): Add method to get MountPoint from CachedMountInfo
Signed-off-by: Jonas <jonas@freesources.org>
2023-10-23 20:50:24 +02:00
Hamid Dehnavi ea06cf2f39 Convert isset ternary to null coalescing operator
Signed-off-by: Hamid Dehnavi <hamid.dev.pro@gmail.com>
2023-09-28 17:44:19 +03:30
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
Robin Appelman f5e2b0b22f allow storing multiple mounts for the same rootid in the mount cache
currently `[$userId, $rootId]` is used as the unique key for storing mounts in the mount cache,
however there are cases where the same rootid is mounted in multiple places for a user which currently leads to not all of those mounts being added to the cache.

Previously this didn't matter as the mount cache was only used to list users with access to a specific file, so a user having access to the file multiple times didn' change anything.

With 24 the mount cache is used for more cases and multiple mounts for the same id becomes relevant.
While I think there isn't a real negative effect atm besides missing the optimized path we should ensure that the mounts are properly listed

Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-04-28 15:08:08 +02:00
Joas Schilling 6b0cef6b9a Add transaction around mass mounts operations
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-03-07 19:58:55 +00:00
Robin Appelman 91d5f6a826 more filesystem setup performance instrumentation
Signed-off-by: Robin Appelman <robin@icewind.nl>
2023-02-10 11:11:13 +01:00
Robin Appelman 10767d7779 fix updating cached mounts that didn't have their mount provider set previously
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-08-16 13:47:41 +02:00
luz paz 368f83095d Fix typos in lib/private subdirectory
Found via `codespell -q 3 -S l10n -L jus ./lib/private`

Signed-off-by: luz paz <luzpaz@github.com>
2022-07-27 08:52:17 -04:00
Carl Schwan d5c23dbb9f Move CappedMemoryCache to OCP
This is an helpful helper that should be used in more place than just
server and this is already the case with groupfodlers, deck, user_oidc
and more using it, so let's make it public

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-07-14 15:54:31 +02:00
Carl Schwan ec6b83cc18 Add stricter psalm type for CappedMemoryCache
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-05-12 15:06:18 +02:00
Joas Schilling 49e62149d8 Make the binary operation order explicit
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-04-21 10:47:26 +02:00
Côme Chilliet 765999f454 Merge pull request #31609 from nextcloud/fix/migrate-away-from-ilogger
Migrate from ILogger to LoggerInterface in lib/private
2022-03-29 09:39:38 +02:00