[Bug]: Batch delete deletes one file and others fail with `423 Locked` error on external storage
⚠️ This issue respects the following points: ⚠️
- [X] This is a bug, not a question or a configuration/webserver/proxy issue.
- [X] This issue is not already reported on Github OR Nextcloud Community Forum (I've searched it).
- [X] Nextcloud Server is up to date. See Maintenance and Release Schedule for supported versions.
- [X] I agree to follow Nextcloud's Code of Conduct.
Bug description
When multiple files are selected and deleted at once, only one file from the bunch gets deleted with status 204, others fail with 423 Locked. This only happens when the network is slow. It can be seen by using the browser's network throttling feature. "Slow 3G" worked for me.
This is only reproducible on external storage like Amazon S3. Local storage does not have this issue.
Similar issue: https://github.com/nextcloud/server/issues/16491
cc @icewind1991
Steps to reproduce
- Setup an external storage
- Have multiple files in the storage/upload them
- Set network profile in the Dev Tools to "Slow 3G"
- Select multiple files and delete them from the Actions menu in the top bar
Expected behavior
All the files are deleted.
Installation method
Community Docker image
Nextcloud Server version
27
Operating system
None
PHP engine version
None
Web server
None
Database engine version
None
Is this bug present after an update or on a fresh install?
Fresh Nextcloud Server install
Are you using the Nextcloud Server Encryption module?
Encryption is Disabled
What user-backends are you using?
- [ ] Default user-backend (database)
- [ ] LDAP/ Active Directory
- [ ] SSO - SAML
- [ ] Other
Configuration report
{
"system": {
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"trusted_domains": [
"localhost"
],
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"dbtype": "sqlite3",
"version": "27.1.6.2",
"overwrite.cli.url": "http:\/\/localhost",
"updater.release.channel": "git",
"installed": true,
"instanceid": "***REMOVED SENSITIVE VALUE***",
"log_type": "errorlog",
"maintenance": false,
"loglevel": 0
}
}
List of activated Apps
Enabled:
- cloud_federation_api: 1.10.0
- comments: 1.17.0
- contactsinteraction: 1.8.0
- dashboard: 7.7.0
- dav: 1.27.0
- federatedfilesharing: 1.17.0
- federation: 1.17.0
- files: 1.22.0
- files_external: 1.19.0
- files_reminders: 1.0.0
- files_sharing: 1.19.0
- files_trashbin: 1.17.0
- files_versions: 1.20.0
- lookup_server_connector: 1.15.0
- oauth2: 1.15.2
- provisioning_api: 1.17.0
- settings: 1.9.0
- sharebymail: 1.17.0
- systemtags: 1.17.0
- theming: 2.2.0
- twofactor_backupcodes: 1.16.0
- updatenotification: 1.17.0
- user_status: 1.7.0
- weather_status: 1.7.0
- workflowengine: 2.9.0
Disabled:
- admin_audit: 1.17.0
- encryption: 2.15.0
- testing: 1.17.0
- user_ldap: 1.17.0
Nextcloud Signing status
integrity:check-core can not be used on git checkouts
Nextcloud Logs
[Wed Jan 31 06:45:27.172357 2024] [php:notice] [pid 329] [client 172.17.0.1:54010] [nextcloud][webdav][0] {"reqId":"hPgWfEi6aXbi7jlWex5M","level":0,"time":"2024-01-31T06:45:27+00:00","remoteAddr":"172.17.0.1","user":"admin","app":"webdav","method":"DELETE","url":"/remote.php/dav/files/admin/mybucket-6969/8-BNgkGdblhKWgd5B.png","message":"{\\"Exception\\":\\"OCA\\\\\\\\DAV\\\\\\\\Connector\\\\\\\\Sabre\\\\\\\\Exception\\\\\\\\FileLocked\\",\\"Message\\":\\"\\\\\\"mybucket-6969/8-BNgkGdblhKWgd5B.png\\\\\\" is locked\\",\\"Code\\":0,\\"Trace\\":[{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php\\",\\"line\\":179,\\"function\\":\\"delete\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Connector\\\\\\\\Sabre\\\\\\\\File\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php\\",\\"line\\":281,\\"function\\":\\"delete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Tree\\",\\"type\\":\\"->\\",\\"args\\":[\\"files/admin/mybucket-6969/8-BNgkGdblhKWgd5B.png\\"]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php\\",\\"line\\":89,\\"function\\":\\"httpDelete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\CorePlugin\\",\\"type\\":\\"->\\",\\"args\\":[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":472,\\"function\\":\\"emit\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[\\"method:DELETE\\",[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":253,\\"function\\":\\"invokeMethod\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":321,\\"function\\":\\"start\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/lib/Server.php\\",\\"line\\":365,\\"function\\":\\"exec\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php\\",\\"line\\":35,\\"function\\":\\"exec\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/remote.php\\",\\"line\\":172,\\"args\\":[\\"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php\\"],\\"function\\":\\"require_once\\"}],\\"File\\":\\"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/File.php\\",\\"Line\\":545,\\"Previous\\":{\\"Exception\\":\\"OCP\\\\\\\\Lock\\\\\\\\LockedException\\",\\"Message\\":\\"\\\\\\"mybucket-6969/8-BNgkGdblhKWgd5B.png\\\\\\" is locked\\",\\"Code\\":0,\\"Trace\\":[{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":1150,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"/mybucket-6969/8-BNgkGdblhKWgd5B.png\\",2]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":702,\\"function\\":\\"basicOperation\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"unlink\\",\\"/mybucket-6969/8-BNgkGdblhKWgd5B.png\\",[\\"delete\\"]]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/File.php\\",\\"line\\":536,\\"function\\":\\"unlink\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"/mybucket-6969/8-BNgkGdblhKWgd5B.png\\"]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php\\",\\"line\\":179,\\"function\\":\\"delete\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Connector\\\\\\\\Sabre\\\\\\\\File\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php\\",\\"line\\":281,\\"function\\":\\"delete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Tree\\",\\"type\\":\\"->\\",\\"args\\":[\\"files/admin/mybucket-6969/8-BNgkGdblhKWgd5B.png\\"]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php\\",\\"line\\":89,\\"function\\":\\"httpDelete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\CorePlugin\\",\\"type\\":\\"->\\",\\"args\\":[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":472,\\"function\\":\\"emit\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[\\"method:DELETE\\",[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":253,\\"function\\":\\"invokeMethod\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":321,\\"function\\":\\"start\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/lib/Server.php\\",\\"line\\":365,\\"function\\":\\"exec\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php\\",\\"line\\":35,\\"function\\":\\"exec\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/remote.php\\",\\"line\\":172,\\"args\\":[\\"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php\\"],\\"function\\":\\"require_once\\"}],\\"File\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"Line\\":1984,\\"Previous\\":{\\"Exception\\":\\"OCP\\\\\\\\Lock\\\\\\\\LockedException\\",\\"Message\\":\\"\\\\\\"files/6a4205bb54ddaac5abf1b3042053d74a\\\\\\"(\\\\\\"8-BNgkGdblhKWgd5B.png\\\\\\") is locked\\",\\"Code\\":0,\\"Trace\\":[{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php\\",\\"line\\":629,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\Storage\\\\\\\\Common\\",\\"type\\":\\"->\\",\\"args\\":[\\"8-BNgkGdblhKWgd5B.png\\",2,[\\"OC\\\\\\\\Lock\\\\\\\\DBLockingProvider\\"]]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php\\",\\"line\\":629,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\Storage\\\\\\\\Wrapper\\\\\\\\Wrapper\\",\\"type\\":\\"->\\",\\"args\\":[\\"8-BNgkGdblhKWgd5B.png\\",2,[\\"OC\\\\\\\\Lock\\\\\\\\DBLockingProvider\\"]]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":1978,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\Storage\\\\\\\\Wrapper\\\\\\\\Wrapper\\",\\"type\\":\\"->\\",\\"args\\":[\\"8-BNgkGdblhKWgd5B.png\\",2,[\\"OC\\\\\\\\Lock\\\\\\\\DBLockingProvider\\"]]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":1150,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"/mybucket-6969/8-BNgkGdblhKWgd5B.png\\",2]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":702,\\"function\\":\\"basicOperation\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"unlink\\",\\"/mybucket-6969/8-BNgkGdblhKWgd5B.png\\",[\\"delete\\"]]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/File.php\\",\\"line\\":536,\\"function\\":\\"unlink\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"/mybucket-6969/8-BNgkGdblhKWgd5B.png\\"]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php\\",\\"line\\":179,\\"function\\":\\"delete\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Connector\\\\\\\\Sabre\\\\\\\\File\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php\\",\\"line\\":281,\\"function\\":\\"delete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Tree\\",\\"ty
localhost:443 172.17.0.1 - - [31/Jan/2024:06:45:26 +0000] "DELETE /remote.php/dav/files/admin/mybucket-6969/8-BNgkGdblhKWgd5B.png HTTP/1.1" 423 3667 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
[Wed Jan 31 06:45:27.186954 2024] [php:notice] [pid 612] [client 172.17.0.1:53996] [nextcloud][webdav][0] {"reqId":"fnJsjmyWb9n1iIqQ4yZB","level":0,"time":"2024-01-31T06:45:27+00:00","remoteAddr":"172.17.0.1","user":"admin","app":"webdav","method":"DELETE","url":"/remote.php/dav/files/admin/mybucket-6969/8-L5ySYdYPqThrGOK.png","message":"{\\"Exception\\":\\"OCA\\\\\\\\DAV\\\\\\\\Connector\\\\\\\\Sabre\\\\\\\\Exception\\\\\\\\FileLocked\\",\\"Message\\":\\"\\\\\\"mybucket-6969/8-L5ySYdYPqThrGOK.png\\\\\\" is locked\\",\\"Code\\":0,\\"Trace\\":[{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php\\",\\"line\\":179,\\"function\\":\\"delete\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Connector\\\\\\\\Sabre\\\\\\\\File\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php\\",\\"line\\":281,\\"function\\":\\"delete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Tree\\",\\"type\\":\\"->\\",\\"args\\":[\\"files/admin/mybucket-6969/8-L5ySYdYPqThrGOK.png\\"]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php\\",\\"line\\":89,\\"function\\":\\"httpDelete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\CorePlugin\\",\\"type\\":\\"->\\",\\"args\\":[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":472,\\"function\\":\\"emit\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[\\"method:DELETE\\",[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":253,\\"function\\":\\"invokeMethod\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":321,\\"function\\":\\"start\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/lib/Server.php\\",\\"line\\":365,\\"function\\":\\"exec\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php\\",\\"line\\":35,\\"function\\":\\"exec\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/remote.php\\",\\"line\\":172,\\"args\\":[\\"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php\\"],\\"function\\":\\"require_once\\"}],\\"File\\":\\"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/File.php\\",\\"Line\\":545,\\"Previous\\":{\\"Exception\\":\\"OCP\\\\\\\\Lock\\\\\\\\LockedException\\",\\"Message\\":\\"\\\\\\"mybucket-6969/8-L5ySYdYPqThrGOK.png\\\\\\" is locked\\",\\"Code\\":0,\\"Trace\\":[{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":1150,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"/mybucket-6969/8-L5ySYdYPqThrGOK.png\\",2]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":702,\\"function\\":\\"basicOperation\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"unlink\\",\\"/mybucket-6969/8-L5ySYdYPqThrGOK.png\\",[\\"delete\\"]]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/File.php\\",\\"line\\":536,\\"function\\":\\"unlink\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"/mybucket-6969/8-L5ySYdYPqThrGOK.png\\"]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php\\",\\"line\\":179,\\"function\\":\\"delete\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Connector\\\\\\\\Sabre\\\\\\\\File\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php\\",\\"line\\":281,\\"function\\":\\"delete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Tree\\",\\"type\\":\\"->\\",\\"args\\":[\\"files/admin/mybucket-6969/8-L5ySYdYPqThrGOK.png\\"]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php\\",\\"line\\":89,\\"function\\":\\"httpDelete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\CorePlugin\\",\\"type\\":\\"->\\",\\"args\\":[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":472,\\"function\\":\\"emit\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[\\"method:DELETE\\",[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":253,\\"function\\":\\"invokeMethod\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[[\\"Sabre\\\\\\\\HTTP\\\\\\\\Request\\"],[\\"Sabre\\\\\\\\HTTP\\\\\\\\Response\\"]]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php\\",\\"line\\":321,\\"function\\":\\"start\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/lib/Server.php\\",\\"line\\":365,\\"function\\":\\"exec\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php\\",\\"line\\":35,\\"function\\":\\"exec\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Server\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/remote.php\\",\\"line\\":172,\\"args\\":[\\"/var/www/nextcloud/apps/dav/appinfo/v2/remote.php\\"],\\"function\\":\\"require_once\\"}],\\"File\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"Line\\":1984,\\"Previous\\":{\\"Exception\\":\\"OCP\\\\\\\\Lock\\\\\\\\LockedException\\",\\"Message\\":\\"\\\\\\"files/ee84cade204372c10d40aec5b6d0ab21\\\\\\"(\\\\\\"8-L5ySYdYPqThrGOK.png\\\\\\") is locked\\",\\"Code\\":0,\\"Trace\\":[{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php\\",\\"line\\":629,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\Storage\\\\\\\\Common\\",\\"type\\":\\"->\\",\\"args\\":[\\"8-L5ySYdYPqThrGOK.png\\",2,[\\"OC\\\\\\\\Lock\\\\\\\\DBLockingProvider\\"]]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php\\",\\"line\\":629,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\Storage\\\\\\\\Wrapper\\\\\\\\Wrapper\\",\\"type\\":\\"->\\",\\"args\\":[\\"8-L5ySYdYPqThrGOK.png\\",2,[\\"OC\\\\\\\\Lock\\\\\\\\DBLockingProvider\\"]]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":1978,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\Storage\\\\\\\\Wrapper\\\\\\\\Wrapper\\",\\"type\\":\\"->\\",\\"args\\":[\\"8-L5ySYdYPqThrGOK.png\\",2,[\\"OC\\\\\\\\Lock\\\\\\\\DBLockingProvider\\"]]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":1150,\\"function\\":\\"changeLock\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"/mybucket-6969/8-L5ySYdYPqThrGOK.png\\",2]},{\\"file\\":\\"/var/www/nextcloud/lib/private/Files/View.php\\",\\"line\\":702,\\"function\\":\\"basicOperation\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"unlink\\",\\"/mybucket-6969/8-L5ySYdYPqThrGOK.png\\",[\\"delete\\"]]},{\\"file\\":\\"/var/www/nextcloud/apps/dav/lib/Connector/Sabre/File.php\\",\\"line\\":536,\\"function\\":\\"unlink\\",\\"class\\":\\"OC\\\\\\\\Files\\\\\\\\View\\",\\"type\\":\\"->\\",\\"args\\":[\\"/mybucket-6969/8-L5ySYdYPqThrGOK.png\\"]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php\\",\\"line\\":179,\\"function\\":\\"delete\\",\\"class\\":\\"OCA\\\\\\\\DAV\\\\\\\\Connector\\\\\\\\Sabre\\\\\\\\File\\",\\"type\\":\\"->\\",\\"args\\":[]},{\\"file\\":\\"/var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php\\",\\"line\\":281,\\"function\\":\\"delete\\",\\"class\\":\\"Sabre\\\\\\\\DAV\\\\\\\\Tree\\",\\"ty
localhost:443 172.17.0.1 - - [31/Jan/2024:06:45:26 +0000] "DELETE /remote.php/dav/files/admin/mybucket-6969/8-L5ySYdYPqThrGOK.png HTTP/1.1" 423 872 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
localhost:443 172.17.0.1 - - [31/Jan/2024:06:45:26 +0000] "DELETE /remote.php/dav/files/admin/mybucket-6969/8-IKSTNEVnkcYptSc.png HTTP/1.1" 204 3422 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
Additional info
HTTP/1.1 423 Locked Date: Wed, 31 Jan 2024 06:45:26 GMT Server: Apache/2.4.56 (Debian) Referrer-Policy: no-referrer X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-Permitted-Cross-Domain-Policies: none X-Robots-Tag: noindex, nofollow X-XSS-Protection: 1; mode=block X-Powered-By: PHP/8.0.30 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Content-Security-Policy: default-src 'none'; Content-Length: 255 Keep-Alive: timeout=5, max=99 Connection: Keep-Alive Content-Type: application/xml; charset=utf-8
@artonge any ideas?
@kyteinsky, had some insights shared by @icewind1991 :
Considering this is reproducible mainly on slow networks, the log conflict is likely legitimate, since we've had locking issues in the past with DELETEs if file previews are still being generated, keeping the file read-locked.
An approach would be to implement some kind of retry-on-lock logic.