Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Batch delete deletes one file and others fail with 423 Locked error on external storage #43228

Open
4 of 8 tasks
kyteinsky opened this issue Jan 31, 2024 · 2 comments
Open
4 of 8 tasks
Assignees
Labels
0. Needs triage Pending check for reproducibility or if it fits our roadmap 27-feedback bug feature: dav feature: external storage

Comments

@kyteinsky
Copy link
Contributor

⚠️ This issue respects the following points: ⚠️

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: #16491

cc @icewind1991

Steps to reproduce

  1. Setup an external storage
  2. Have multiple files in the storage/upload them
  3. Set network profile in the Dev Tools to "Slow 3G"
  4. 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

@kyteinsky kyteinsky added bug 0. Needs triage Pending check for reproducibility or if it fits our roadmap labels Jan 31, 2024
@solracsf solracsf changed the title [Bug]: Batch delete deletes one file and others fail with 423 Locked error on external storage [Bug]: Batch delete deletes one file and others fail with 423 Locked error on external storage Feb 6, 2024
@sorbaugh
Copy link
Contributor

@artonge any ideas?

@sorbaugh
Copy link
Contributor

sorbaugh commented Mar 6, 2024

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0. Needs triage Pending check for reproducibility or if it fits our roadmap 27-feedback bug feature: dav feature: external storage
Projects
None yet
Development

No branches or pull requests

5 participants