Commit graph

442 commits

Author SHA1 Message Date
Benjamin Gaussorgues
7f71b46942
Merge pull request #57882 from nextcloud/useStrictComparisonOperator 2026-01-29 09:20:18 +01:00
Git'Fellow
080335009b refactor: use strict comparison operator
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2026-01-28 21:11:47 +01:00
Carl Schwan
7100c71166
perf(metadata): Add optimized sharding for metadata deletion
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-28 17:18:33 +01:00
Carl Schwan
fd3878448b
feat(filecache): Scale DB query created when deleting file from filecache
Instead of creating a CacheEntryRemovedEvent for each deleted files,
create a single CacheEntriesRemovedEvent which wrap multiple
CacheEntryRemovedEvent.

This allow listener to optimize the query they do when multiple files
are deleted at the same time (e.g. when deleting a folder).

Signed-off-by: Carl Schwan <carl.schwan@nextclound.com>
2026-01-28 16:07:57 +01:00
Benjamin Gaussorgues
2437046e25
Merge pull request #57756 from nextcloud/carl/function-builder
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, 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
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
2026-01-26 14:14:51 +01:00
Stephan Orbaugh
9b547f5c8d
Merge pull request #57733 from nextcloud/carl/propagator-rollback
fix(Propagator): rollback transaction if it fails
2026-01-26 11:27:21 +01:00
Carl Schwan
b4dfdf6492
refactor: Prefer using IFunctionBuilder than createFunction
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-23 16:58:38 +01:00
Carl Schwan
dd26a8b7eb
fix(cache): Fix parsing cache entry from groupfolder and collectives
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-23 10:52:44 +01:00
Carl Schwan
3900c45ea4
fix(Propagator): rollback transaction if it fails 2026-01-22 17:08:57 +01:00
Benjamin Gaussorgues
aba8a7ff86
Merge pull request #57549 from nextcloud/carl/optimize-getdirectory-content 2026-01-16 14:09:14 +01:00
Robin Appelman
a79bf069a3 fix: dont error on missing path_hash/checksum cacheentry fields
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-15 18:02:41 +01:00
Carl Schwan
06827970a8
fix(cache): Handle groupfolder specific entries in cacheEntryFromData
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-15 11:47:59 +01:00
Carl Schwan
0b8eae7789
perf(files): Optimize CacheEntry creation
Avoid many copy on writes and create array only once.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-15 11:47:41 +01:00
Carl Schwan
27339601f6
perf(View): Optimize getDirectoryContent hot-loop
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-14 18:03:51 +01:00
Robin Appelman
4720c39048 fix: use interfaces instead of classes in Cache\Watcher type hints
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-31 12:23:04 +01:00
Robin Appelman
5c625b7a07 feat: add an option to filter what paths get checked for updates
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-31 12:23:04 +01:00
Benjamin Frueh
989b75ee43 fix: Clear mount cache when file storage changes during move
Signed-off-by: Benjamin Frueh <benjamin.frueh@gmail.com>
2025-11-20 09:15:28 +01:00
Robin Appelman
17104bf3a0
chore: better type hints for getAvailability
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-11-06 20:09:17 +01:00
Ferdinand Thiessen
2369ad9601
Merge pull request #55629 from nextcloud/carl/cleanup-propagator
refactor(IPropagator): Cleanup implementation
2025-10-22 21:50:47 +02:00
Côme Chilliet
ad9574970a
fix: Fix crash in files_version about uninitialized property
Fix "Typed property OC\\Files\\Cache\\Cache::$storage must not be accessed before initialization"

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-10-14 16:56:07 +02:00
Marcel Klehr
3522a3375e fix(FileAccess): Make getAncestorInStorage pass sharding tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-09 09:27:50 +02:00
Marcel Klehr
b158a77365 fix(FileAccess): Try to fix type error
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-09 09:27:50 +02:00
Marcel Klehr
62bff06aeb fix(FileAccess): Chunk parent query
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-09 09:27:50 +02:00
Marcel Klehr
9ccc798655 fix(FileAccess): Make getByAncestorInStorage sharding ready
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-09 09:27:50 +02:00
Carl Schwan
475c84722f refactor(IPropagator): Cleanup implementation
- Add missing type hinting
- Use only public methods from IStorage instead of relying on internal
  \OC\Storage methods
- Refactor HomePropagator to use ignore argument from Propagator instead
  of reimplementing the same logic.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-08 17:15:18 +02:00
Carl Schwan
bef3996c3e fix(preview): Make version column a string
And move it to a different table so that we don't have to pay the
storage cost when not using it (most of the times).

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-08 14:07:06 +02:00
Carl Schwan
66f50bd585 refactor(preview): Use same mimetype ids as filecache
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan
bfc7d5dd9f feat(preview): Implement scanning for previews
This work similarly to the move preview job to migrate the previews to
the new DB table and also reuse some code.

So when we are finding files in appdata/preview, try adding them to the
oc_previews table and delete them from the oc_filecache table.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
provokateurin
8d8f94b8ce
fix(files): Always return a valid mimetype
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-10-06 09:06:17 +02:00
provokateurin
ef279f6049
fix(files): Stop overwriting scan_permissions
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-09-28 14:11:47 +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
Louis Chemineau
8c04dbe599
fix(Updater): Lower deadlock log level from warning to info
If this is safe to ignore, then it does not make sense to keep warning the admins.

Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-09-16 14:49:54 +02:00
Côme Chilliet
12532bb535
fix(encryption): Correctly set encrypted to 0 when copying
If encryption got disabled, copying should set encrypted to 0 for the
 new unencrypted copy. For instance when using encryption:decrypt-all

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-09-09 11:46:18 +02:00
Carl Schwan
c4e6fbdae7 fix(query-builder): Don't catch UniqueConstraintViolationException
UniqueConstraintViolationException is no longer throw directly but
instead is now wrapped inside a \OCP\DB\Exception. So check the
exception reason.

Signed-off-by: Carl Schwan <carl.schwan@nextclound.com>
2025-09-02 11:55:58 +02:00
Carl Schwan
c21b8169ff refactor(querybuilder): Port away from qb::execute() in lib/
Replace by either executeStatement or executeQuery

Signed-off-by: Carl Schwan <carl.schwan@nextclound.com>
2025-09-02 11:55:56 +02:00
Robin Appelman
1a716578fd
fix: fix moving cache items from cache jail with sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-08-22 19:21:31 +02:00
Robin Appelman
01147cf872 fix: add missing color select to tags usage query
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-08-01 02:47:04 +02:00
Marcel Klehr
43be97de08 fix(FileAccess): Use one param for rewriting home dirs and excluding non-user files mounts
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-15 09:15:16 +02:00
Julien Veyssier
cb221c8211 fix(FileAccess*): Change the way home dir root is found, remove the excludeTrashbinMounts param of getDistinctMounts
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2025-07-15 09:15:16 +02:00
Julien Veyssier
a2aeec0f4b fix(FileAccess*): Adress review comments
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2025-07-15 09:15:16 +02:00
Julien Veyssier
28dc4a299e fix(FileAccess): exclude trashbin nodes on the oc_filecache query, there is no trashbin mount
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2025-07-15 09:15:16 +02:00
Julien Veyssier
7e986988fe fix(FileAccess*): Adress review comments
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2025-07-15 09:15:16 +02:00
Marcel Klehr
131125bbb7 fix(FileAccessTest): Adress review comments
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-15 09:15:16 +02:00
Marcel Klehr
895160a1d3 fix(FileAccessTest): Do not use LIMIT in subquery
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-15 09:15:16 +02:00
Marcel Klehr
34b3f7553b fix(FileAccess#getDistinctMounts): Order results deterministically
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-15 09:15:16 +02:00
Marcel Klehr
10cc43041b fix(FileAccess#getByAncestorInStorage): Use a subquery to fix tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-15 09:15:16 +02:00
Marcel Klehr
d67c877ac5 fix(FileAccess): Add tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-15 09:15:16 +02:00
Marcel Klehr
5689af5a94 fix(FileAccess): Run cs:fix
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-15 09:15:16 +02:00
Marcel Klehr
d8c6f8d18e fix(FileAccess): Address review comments
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-15 09:15:16 +02:00
Marcel Klehr
611d83aa6a fix: Fix psalm issues
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-15 09:15:16 +02:00