server icon indicating copy to clipboard operation
server copied to clipboard

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

Open kyteinsky opened this issue 1 year ago • 1 comments

⚠️ 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: https://github.com/nextcloud/server/issues/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 avatar Jan 31 '24 07:01 kyteinsky

@artonge any ideas?

sorbaugh avatar Feb 16 '24 15:02 sorbaugh

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

sorbaugh avatar Mar 06 '24 10:03 sorbaugh