Skip to content

"Remove download" option missing randomly for materialised files/folders in v34.0.0 #10517

Description

@sjg2203

⚠️ Before submitting, please verify the following: ⚠️

Bug description

The “Remove download” context‑menu option is randomly missing in v34.0.0, even when the item is fully materialised and should be eligible for eviction via File Provider.
This prevents freeing local disk space and makes it impossible to remove local copies of certain files or folders. The issue appears intermittently and is not tied to file type, size, or sync state.
This seems related to the new File Provider-only sync model introduced in v34.0.0, where Finder actions depend on macOS’s materialisation state. The state is not reflected correctly in the context menu.
Could be similar-ish to #10085 but it happens on files as well.

File:
Image

Folder:
Image

Steps to reproduce

  1. Install Nextcloud Desktop v34.0.0 on macOS 26.6
  2. Sync any folder from the server
  3. Right‑click a file or folder → choose “Download now”/"Always keep downloaded" to materialise it
  4. Once fully downloaded, right‑click the same item again
  5. “Remove Download” option is missing, and sometimes it is present, even for similar items in the same folder

Expected behavior

The Finder context menu should show the “Remove download” option for any file or folder that is fully materialised, allowing the user to remove the local copy while keeping it in the cloud

Which files are affected by this bug

Files and folders

Operating system

macOS

Which version of the operating system you are running.

macOS Tahoe 26.6 (25G72)

Installation method

Official Installer for macOS 13 and later

Nextcloud Server version

34.0.2

Nextcloud Desktop Client version

34.0.0

Did this occur after an update or on a clean installation?

Clean desktop client installation

Are you using the Nextcloud Server Encryption module?

No

Are you using an external user-backend?

  • Default internal user-backend
  • LDAP or Active Directory
  • SSO - SAML
  • Other

Nextcloud Server logs

{"reqId":"R5cVWv87dQJ4ZVQgjQle","level":3,"time":"2026-07-29T11:20:46+00:00","remoteAddr":"IPADDRESS","user":"USER","app":"core","method":"MOVE","url":"/remote.php/dav/uploads/USER/web-file-upload-529dc7d130d6676c/.file","scriptName":"/remote.php","message":"More than 1000 expressions in a list are not allowed on Oracle.","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6 Safari/605.1.15","version":"34.0.2.1","exception":{"Exception":"Doctrine\\DBAL\\Query\\QueryException","Message":"More than 1000 expressions in a list are not allowed on Oracle.","Code":0,"Trace":[{"file":"/var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php","line":256,"function":"prepareForExecute","class":"OC\\DB\\QueryBuilder\\QueryBuilder","type":"->","args":[]},{"file":"/var/www/html/lib/private/FilesMetadata/Service/MetadataRequestService.php","line":117,"function":"executeQuery","class":"OC\\DB\\QueryBuilder\\QueryBuilder","type":"->","args":[]},{"file":"/var/www/html/lib/private/FilesMetadata/FilesMetadataManager.php","line":150,"function":"getMetadataFromFileIds","class":"OC\\FilesMetadata\\Service\\MetadataRequestService","type":"->","args":[[0,1,2,3,4,"And 1995 more entries, set log level to debug to see all entries"]]},{"file":"/var/www/html/apps/files/lib/Service/LivePhotosService.php","line":43,"function":"getMetadataForFiles","class":"OC\\FilesMetadata\\FilesMetadataManager","type":"->","args":[[0,1,2,3,4,"And 1995 more entries, set log level to debug to see all entries"]]},{"file":"/var/www/html/apps/files/lib/Listener/SyncLivePhotosListener.php","line":98,"function":"getLivePhotoPeerIds","class":"OCA\\Files\\Service\\LivePhotosService","type":"->","args":[[0,1,2,3,4,"And 1995 more entries, set log level to debug to see all entries"]]},{"file":"/var/www/html/apps/files/lib/Listener/SyncLivePhotosListener.php","line":68,"function":"handleCacheEntriesRemovedEvent","class":"OCA\\Files\\Listener\\SyncLivePhotosListener","type":"->","args":[{"__class__":"OCP\\Files\\Cache\\CacheEntriesRemovedEvent"}]},{"file":"/var/www/html/lib/private/EventDispatcher/ServiceEventListener.php","line":57,"function":"handle","class":"OCA\\Files\\Listener\\SyncLivePhotosListener","type":"->","args":[{"__class__":"OCP\\Files\\Cache\\CacheEntriesRemovedEvent"}]},{"file":"/var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":220,"function":"__invoke","class":"OC\\EventDispatcher\\ServiceEventListener","type":"->","args":[{"__class__":"OCP\\Files\\Cache\\CacheEntriesRemovedEvent"},"OCP\\Files\\Cache\\CacheEntriesRemovedEvent",{"__class__":"Symfony\\Component\\EventDispatcher\\EventDispatcher"}]},{"file":"/var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php","line":56,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->","args":[[{"__class__":"Closure"},{"__class__":"Closure"}],"OCP\\Files\\Cache\\CacheEntriesRemovedEvent",{"__class__":"OCP\\Files\\Cache\\CacheEntriesRemovedEvent"}]},{"file":"/var/www/html/lib/private/EventDispatcher/EventDispatcher.php","line":73,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->","args":[{"__class__":"OCP\\Files\\Cache\\CacheEntriesRemovedEvent"},"OCP\\Files\\Cache\\CacheEntriesRemovedEvent"]},{"file":"/var/www/html/lib/private/EventDispatcher/EventDispatcher.php","line":86,"function":"dispatch","class":"OC\\EventDispatcher\\EventDispatcher","type":"->","args":["OCP\\Files\\Cache\\CacheEntriesRemovedEvent",{"__class__":"OCP\\Files\\Cache\\CacheEntriesRemovedEvent"}]},{"file":"/var/www/html/lib/private/Files/Cache/Cache.php","line":669,"function":"dispatchTyped","class":"OC\\EventDispatcher\\EventDispatcher","type":"->","args":[{"__class__":"OCP\\Files\\Cache\\CacheEntriesRemovedEvent"}]},{"file":"/var/www/html/lib/private/Files/Cache/Cache.php","line":581,"function":"removeChildren","class":"OC\\Files\\Cache\\Cache","type":"->","args":[{"__class__":"OC\\Files\\Cache\\CacheEntry"}]},{"file":"/var/www/html/lib/private/Files/Cache/Wrapper/CacheWrapper.php","line":199,"function":"remove","class":"OC\\Files\\Cache\\Cache","type":"->","args":["uploads/web-file-upload-529dc7d130d6676c"]},{"file":"/var/www/html/lib/private/Files/Cache/Updater.php","line":108,"function":"remove","class":"OC\\Files\\Cache\\Wrapper\\CacheWrapper","type":"->","args":["uploads/web-file-upload-529dc7d130d6676c"]},{"file":"/var/www/html/lib/private/Files/View.php","line":292,"function":"remove","class":"OC\\Files\\Cache\\Updater","type":"->","args":["uploads/web-file-upload-529dc7d130d6676c"]},{"file":"/var/www/html/lib/private/Files/View.php","line":1249,"function":"removeUpdate","class":"OC\\Files\\View","type":"->","args":[{"__class__":"OCA\\TermsOfService\\Filesystem\\StorageWrapper","cache":null,"scanner":{"__class__":"OC\\Files\\Cache\\Scanner"},"watcher":null,"propagator":null,"updater":{"__class__":"OC\\Files\\Cache\\Updater"},"mountPoint":"/USER/"},"uploads/web-file-upload-529dc7d130d6676c"]},{"file":"/var/www/html/lib/private/Files/View.php","line":319,"function":"basicOperation","class":"OC\\Files\\View","type":"->","args":["rmdir","/web-file-upload-529dc7d130d6676c",["delete"]]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Directory.php","line":316,"function":"rmdir","class":"OC\\Files\\View","type":"->","args":["/web-file-upload-529dc7d130d6676c"]},{"file":"/var/www/html/apps/dav/lib/Upload/FutureFile.php","line":89,"function":"delete","class":"OCA\\DAV\\Connector\\Sabre\\Directory","type":"->","args":[]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php","line":182,"function":"delete","class":"OCA\\DAV\\Upload\\FutureFile","type":"->","args":[]},{"file":"/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php","line":78,"function":"move","class":"Sabre\\DAV\\Tree","type":"->","args":["uploads/USER/web-file-upload-529dc7d130d6676c/.file","files/USER/FOLDER/FILE"]},{"file":"/var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php","line":60,"function":"performMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->","args":["uploads/USER/web-file-upload-529dc7d130d6676c/.file","files/USER/FOLDER/FILE"]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMove","class":"OCA\\DAV\\Upload\\ChunkingPlugin","type":"->","args":["uploads/USER/web-file-upload-529dc7d130d6676c/.file","files/USER/FOLDER/FILE"]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":603,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["beforeMove",["uploads/USER/web-file-upload-529dc7d130d6676c/.file","files/USER/FOLDER/FILE"]]},{"file":"/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpMove","class":"Sabre\\DAV\\CorePlugin","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->","args":["method:MOVE",[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]]},{"file":"/var/www/html/apps/dav/lib/Connector/Sabre/Server.php","line":215,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->","args":[{"__class__":"Sabre\\HTTP\\Request"},{"__class__":"Sabre\\HTTP\\Response"}]},{"file":"/var/www/html/apps/dav/lib/Server.php","line":432,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->","args":[]},{"file":"/var/www/html/apps/dav/appinfo/v2/remote.php","line":25,"function":"exec","class":"OCA\\DAV\\Server","type":"->","args":[]},{"file":"/var/www/html/remote.php","line":152,"args":["/var/www/html/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php","Line":232,"message":"More than 1000 expressions in a list are not allowed on Oracle.","query":"SELECT `file_id`, `json`, `sync_token` FROM `*PREFIX*files_metadata` WHERE `file_id` IN (:dcValue1)","exception":"{\"class\":\"Doctrine\\DBAL\\Query\\QueryException\",\"message\":\"More than 1000 expressions in a list are not allowed on Oracle.\",\"code\":0,\"file\":\"/var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php:232\",\"trace\":\"#0 /var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php(256): OC\\DB\\QueryBuilder\\QueryBuilder->prepareForExecute()\\n#1 /var/www/html/lib/private/FilesMetadata/Service/MetadataRequestService.php(117): OC\\DB\\QueryBuilder\\QueryBuilder->executeQuery()\\n#2 /var/www/html/lib/private/FilesMetadata/FilesMetadataManager.php(150): OC\\FilesMetadata\\Service\\MetadataRequestService->getMetadataFromFileIds(Array)\\n#3 /var/www/html/apps/files/lib/Service/LivePhotosService.php(43): OC\\FilesMetadata\\FilesMetadataManager->getMetadataForFiles(Array)\\n#4 /var/www/html/apps/files/lib/Listener/SyncLivePhotosListener.php(98): OCA\\Files\\Service\\LivePhotosService->getLivePhotoPeerIds(Array)\\n#5 /var/www/html/apps/files/lib/Listener/SyncLivePhotosListener.php(68): OCA\\Files\\Listener\\SyncLivePhotosListener->handleCacheEntriesRemovedEvent(Object(OCP\\Files\\Cache\\CacheEntriesRemovedEvent))\\n#6 /var/www/html/lib/private/EventDispatcher/ServiceEventListener.php(57): OCA\\Files\\Listener\\SyncLivePhotosListener->handle(Object(OCP\\Files\\Cache\\CacheEntriesRemovedEvent))\\n#7 /var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php(220): OC\\EventDispatcher\\ServiceEventListener->__invoke(Object(OCP\\Files\\Cache\\CacheEntriesRemovedEvent), 'OCP\\\\Files\\\\Cache...', Object(Symfony\\Component\\EventDispatcher\\EventDispatcher))\\n#8 /var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php(56): Symfony\\Component\\EventDispatcher\\EventDispatcher->callListeners(Array, 'OCP\\\\Files\\\\Cache...', Object(OCP\\Files\\Cache\\CacheEntriesRemovedEvent))\\n#9 /var/www/html/lib/private/EventDispatcher/EventDispatcher.php(73): Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch(Object(OCP\\Files\\Cache\\CacheEntriesRemovedEvent), 'OCP\\\\Files\\\\Cache...')\\n#10 /var/www/html/lib/private/EventDispatcher/EventDispatcher.php(86): OC\\EventDispatcher\\EventDispatcher->dispatch('OCP\\\\Files\\\\Cache...', Object(OCP\\Files\\Cache\\CacheEntriesRemovedEvent))\\n#11 /var/www/html/lib/private/Files/Cache/Cache.php(669): OC\\EventDispatcher\\EventDispatcher->dispatchTyped(Object(OCP\\Files\\Cache\\CacheEntriesRemovedEvent))\\n#12 /var/www/html/lib/private/Files/Cache/Cache.php(581): OC\\Files\\Cache\\Cache->removeChildren(Object(OC\\Files\\Cache\\CacheEntry))\\n#13 /var/www/html/lib/private/Files/Cache/Wrapper/CacheWrapper.php(199): OC\\Files\\Cache\\Cache->remove('uploads/web-fil...')\\n#14 /var/www/html/lib/private/Files/Cache/Updater.php(108): OC\\Files\\Cache\\Wrapper\\CacheWrapper->remove('uploads/web-fil...')\\n#15 /var/www/html/lib/private/Files/View.php(292): OC\\Files\\Cache\\Updater->remove('uploads/web-fil...')\\n#16 /var/www/html/lib/private/Files/View.php(1249): OC\\Files\\View->removeUpdate(Object(OCA\\TermsOfService\\Filesystem\\StorageWrapper), 'uploads/web-fil...')\\n#17 /var/www/html/lib/private/Files/View.php(319): OC\\Files\\View->basicOperation('rmdir', '/web-file-uploa...', Array)\\n#18 /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php(316): OC\\Files\\View->rmdir('/web-file-uploa...')\\n#19 /var/www/html/apps/dav/lib/Upload/FutureFile.php(89): OCA\\DAV\\Connector\\Sabre\\Directory->delete()\\n#20 /var/www/html/3rdparty/sabre/dav/lib/DAV/Tree.php(182): OCA\\DAV\\Upload\\FutureFile->delete()\\n#21 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(78): Sabre\\DAV\\Tree->move('uploads/USER/w...', 'files/USER/FOLDER...')\\n#22 /var/www/html/apps/dav/lib/Upload/ChunkingPlugin.php(60): OCA\\DAV\\Upload\\ChunkingPlugin->performMove('uploads/USER/w...', 'files/USER/FOLDER...')\\n#23 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): OCA\\DAV\\Upload\\ChunkingPlugin->beforeMove('uploads/USER/w...', 'files/USER/FOLDER...')\\n#24 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(603): Sabre\\DAV\\Server->emit('beforeMove', Array)\\n#25 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpMove(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#26 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:MOVE', Array)\\n#27 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(215): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#28 /var/www/html/apps/dav/lib/Server.php(432): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#29 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#30 /var/www/html/remote.php(152): require_once('/var/www/html/a...')\\n#31 {main}\"}","CustomMessage":"More than 1000 expressions in a list are not allowed on Oracle."}}

Additional info

Happy to share the Desktop client logs if needed!

Really appreciating all the effort you put into the development and maintenance🫰

Metadata

Metadata

Assignees

No one assigned

    Labels

    0. Needs triagebugfeature: 📁 file providermacOS File Provider Extension, more general also known as virtual file system.os: 🍎 macOSApple macOS, formerly also known as OS X

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions