Folders get lost when performing the batch deletion
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 8.8k
- Forks
- 2.1k
- Avg merge
- 20h 7m
- Merged PRs (30d)
- 41
Description
Steps to reproduce
- Make around 50 folders
#!/usr/bin/env bash
for (( c=1; c<=50; c++ ))
do
folderName="test$c"
echo ${folderName}
curl -X MKCOL -u admin:admin http://host.docker.internal:8080/remote.php/dav/files/admin/${folderName}
done
- Go to the UI and use batch action to delete all the folders
- Error messages is shown that certain folders weren't deleted
- Try deleting them again with batch action
- Error message is again displayed but upon reloading it shows that the folders are gone
- Go to the trashbin
Expected behaviour
All the deleted 50 folders should be in the trash bin
Actual behaviour
The folders that were deleted the second time aren't there
Server configuration
Operating system: Ubuntu 22.04.2 LTS
Web server: started server with this config https://github.com/owncloud/web/blob/master/docker-compose.yml
ownCloud version: (see ownCloud admin page) 10.12.1.3
ownCloud log (data/owncloud.log)
web_oc10 | {"reqId":"gRb6KHtxX5kr846MajiF","level":4,"time":"2023-05-11T05:09:07+00:00","remoteAddr":"172.20.0.1","user":"admin","app":"webdav","method":"DELETE","url":"\/remote.php\/dav\/files\/admin\/test3","message":"Exception: An exception occurred while executing 'UPDATE \"oc_filecache\" SET \"storage\" = ?, \"path\" = ?, \"path_hash\" = ?, \"name\" = ?, \"parent\" =? WHERE \"fileid\" = ?' with params [2, \"files_trashbin\\\/files\\\/test3.d1683781747\", \"0e9bc4e4c7a9ecb2b6b254101173feab\", \"test3.d1683781747\", 384, 387]:\n\nSQLSTATE[HY000]: General error: 5 database is locked: {\"Exception\":\"Doctrine\\\\DBAL\\\\Exception\\\\LockWaitTimeoutException\",\"Message\":\"An exception occurred while executing 'UPDATE \\\"oc_filecache\\\" SET \\\"storage\\\" = ?, \\\"path\\\" = ?, \\\"path_hash\\\" = ?, \\\"name\\\" = ?, \\\"parent\\\" =? WHERE \\\"fileid\\\" = ?' with params [2, \\\"files_trashbin\\\\\\\/files\\\\\\\/test3.d1683781747\\\", \\\"0e9bc4e4c7a9ecb2b6b254101173feab\\\", \\\"test3.d1683781747\\\", 384, 387]:\\n\\nSQLSTATE[HY000]: General error: 5 database is locked\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/DBALException.php(182): Doctrine\\\\DBAL\\\\Driver\\\\AbstractSQLiteDriver->convertException()\\n#1 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/DBALException.php(159): Doctrine\\\\DBAL\\\\DBALException::wrapException()\\n#2 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Connection.php(2226): Doctrine\\\\DBAL\\\\DBALException::driverExceptionDuringQuery()\\n#3 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Connection.php(1313): Doctrine\\\\DBAL\\\\Connection->handleExceptionDuringQuery()\\n#4 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/DB\\\/Connection.php(191): Doctrine\\\\DBAL\\\\Connection->executeQuery()\\n#5 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Cache.php(620): OC\\\\DB\\\\Connection->executeQuery()\\n#6 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Cache.php(570): OC\\\\Files\\\\Cache\\\\Cache->moveFromCache()\\n#7 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Updater.php(195): OC\\\\Files\\\\Cache\\\\Cache->move()\\n#8 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Trashbin.php(346): OC\\\\Files\\\\Cache\\\\Updater->renameFromStorage()\\n#9 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Storage.php(199): OCA\\\\Files_Trashbin\\\\Trashbin::move2trash()\\n#10 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Storage.php(135): OCA\\\\Files_Trashbin\\\\Storage->doDelete()\\n#11 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(1225): OCA\\\\Files_Trashbin\\\\Storage->rmdir()\\n#12 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(370): OC\\\\Files\\\\View->basicOperation()\\n#13 \\\/var\\\/www\\\/owncloud\\\/lib\\\/public\\\/Events\\\/EventEmitterTrait.php(50): OC\\\\Files\\\\View->OC\\\\Files\\\\{closure}(*** sensitive parameters replaced ***)\\n#14 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(381): OC\\\\Files\\\\View->emittingCall()\\n#15 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/Directory.php(357): OC\\\\Files\\\\View->rmdir()\\n#16 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Tree.php(179): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Directory->delete()\\n#17 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(281): Sabre\\\\DAV\\\\Tree->delete()\\n#18 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/event\\\/lib\\\/WildcardEmitterTrait.php(89): Sabre\\\\DAV\\\\CorePlugin->httpDelete()\\n#19 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(472): Sabre\\\\DAV\\\\Server->emit()\\n#20 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(253): Sabre\\\\DAV\\\\Server->invokeMethod()\\n#21 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/Server.php(348): Sabre\\\\DAV\\\\Server->start()\\n#22 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/appinfo\\\/v2\\\/remote.php(31): OCA\\\\DAV\\\\Server->exec()\\n#23 \\\/var\\\/www\\\/owncloud\\\/remote.php(165): require_once('\\\/var\\\/www\\\/ownclo...')\\n#24 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Driver\\\/AbstractSQLiteDriver.php\",\"Line\":39}"}
web_oc10 | {"reqId":"gRb6KHtxX5kr846MajiF","level":4,"time":"2023-05-11T05:09:07+00:00","remoteAddr":"172.20.0.1","user":"admin","app":"webdav","method":"DELETE","url":"\/remote.php\/dav\/files\/admin\/test3","message":"Caused by: {\"Exception\":\"Doctrine\\\\DBAL\\\\Driver\\\\PDO\\\\Exception\",\"Message\":\"SQLSTATE[HY000]: General error: 5 database is locked\",\"Code\":\"HY000\",\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Driver\\\/PDOStatement.php(119): Doctrine\\\\DBAL\\\\Driver\\\\PDO\\\\Exception::new()\\n#1 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Connection.php(1304): Doctrine\\\\DBAL\\\\Driver\\\\PDOStatement->execute()\\n#2 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/DB\\\/Connection.php(191): Doctrine\\\\DBAL\\\\Connection->executeQuery()\\n#3 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Cache.php(620): OC\\\\DB\\\\Connection->executeQuery()\\n#4 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Cache.php(570): OC\\\\Files\\\\Cache\\\\Cache->moveFromCache()\\n#5 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Updater.php(195): OC\\\\Files\\\\Cache\\\\Cache->move()\\n#6 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Trashbin.php(346): OC\\\\Files\\\\Cache\\\\Updater->renameFromStorage()\\n#7 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Storage.php(199): OCA\\\\Files_Trashbin\\\\Trashbin::move2trash()\\n#8 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Storage.php(135): OCA\\\\Files_Trashbin\\\\Storage->doDelete()\\n#9 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(1225): OCA\\\\Files_Trashbin\\\\Storage->rmdir()\\n#10 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(370): OC\\\\Files\\\\View->basicOperation()\\n#11 \\\/var\\\/www\\\/owncloud\\\/lib\\\/public\\\/Events\\\/EventEmitterTrait.php(50): OC\\\\Files\\\\View->OC\\\\Files\\\\{closure}(*** sensitive parameters replaced ***)\\n#12 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(381): OC\\\\Files\\\\View->emittingCall()\\n#13 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/Directory.php(357): OC\\\\Files\\\\View->rmdir()\\n#14 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Tree.php(179): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Directory->delete()\\n#15 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(281): Sabre\\\\DAV\\\\Tree->delete()\\n#16 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/event\\\/lib\\\/WildcardEmitterTrait.php(89): Sabre\\\\DAV\\\\CorePlugin->httpDelete()\\n#17 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(472): Sabre\\\\DAV\\\\Server->emit()\\n#18 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(253): Sabre\\\\DAV\\\\Server->invokeMethod()\\n#19 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/Server.php(348): Sabre\\\\DAV\\\\Server->start()\\n#20 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/appinfo\\\/v2\\\/remote.php(31): OCA\\\\DAV\\\\Server->exec()\\n#21 \\\/var\\\/www\\\/owncloud\\\/remote.php(165): require_once('\\\/var\\\/www\\\/ownclo...')\\n#22 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Driver\\\/PDO\\\/Exception.php\",\"Line\":18}"}
web_oc10 | {"reqId":"gRb6KHtxX5kr846MajiF","level":4,"time":"2023-05-11T05:09:07+00:00","remoteAddr":"172.20.0.1","user":"admin","app":"webdav","method":"DELETE","url":"\/remote.php\/dav\/files\/admin\/test3","message":"Caused by: {\"Exception\":\"PDOException\",\"Message\":\"SQLSTATE[HY000]: General error: 5 database is locked\",\"Code\":\"HY000\",\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Driver\\\/PDOStatement.php(117): PDOStatement->execute()\\n#1 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Connection.php(1304): Doctrine\\\\DBAL\\\\Driver\\\\PDOStatement->execute()\\n#2 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/DB\\\/Connection.php(191): Doctrine\\\\DBAL\\\\Connection->executeQuery()\\n#3 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Cache.php(620): OC\\\\DB\\\\Connection->executeQuery()\\n#4 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Cache.php(570): OC\\\\Files\\\\Cache\\\\Cache->moveFromCache()\\n#5 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Updater.php(195): OC\\\\Files\\\\Cache\\\\Cache->move()\\n#6 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Trashbin.php(346): OC\\\\Files\\\\Cache\\\\Updater->renameFromStorage()\\n#7 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Storage.php(199): OCA\\\\Files_Trashbin\\\\Trashbin::move2trash()\\n#8 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Storage.php(135): OCA\\\\Files_Trashbin\\\\Storage->doDelete()\\n#9 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(1225): OCA\\\\Files_Trashbin\\\\Storage->rmdir()\\n#10 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(370): OC\\\\Files\\\\View->basicOperation()\\n#11 \\\/var\\\/www\\\/owncloud\\\/lib\\\/public\\\/Events\\\/EventEmitterTrait.php(50): OC\\\\Files\\\\View->OC\\\\Files\\\\{closure}(*** sensitive parameters replaced ***)\\n#12 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(381): OC\\\\Files\\\\View->emittingCall()\\n#13 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/Directory.php(357): OC\\\\Files\\\\View->rmdir()\\n#14 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Tree.php(179): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Directory->delete()\\n#15 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(281): Sabre\\\\DAV\\\\Tree->delete()\\n#16 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/event\\\/lib\\\/WildcardEmitterTrait.php(89): Sabre\\\\DAV\\\\CorePlugin->httpDelete()\\n#17 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(472): Sabre\\\\DAV\\\\Server->emit()\\n#18 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(253): Sabre\\\\DAV\\\\Server->invokeMethod()\\n#19 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/Server.php(348): Sabre\\\\DAV\\\\Server->start()\\n#20 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/appinfo\\\/v2\\\/remote.php(31): OCA\\\\DAV\\\\Server->exec()\\n#21 \\\/var\\\/www\\\/owncloud\\\/remote.php(165): require_once('\\\/var\\\/www\\\/ownclo...')\\n#22 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Driver\\\/PDOStatement.php\",\"Line\":117}"}
web_oc10 | 172.20.0.1 - - [11/May/2023:05:09:07 +0000] "DELETE /remote.php/dav/files/admin/test3 HTTP/1.1" 500 1052 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
web_oc10 | {"reqId":"B9aGwbuUzxWkmUt4hRKP","level":4,"time":"2023-05-11T05:09:07+00:00","remoteAddr":"172.20.0.1","user":"admin","app":"webdav","method":"DELETE","url":"\/remote.php\/dav\/files\/admin\/test4","message":"Exception: An exception occurred while executing 'UPDATE \"oc_filecache\" SET \"storage\" = ?, \"path\" = ?, \"path_hash\" = ?, \"name\" = ?, \"parent\" =? WHERE \"fileid\" = ?' with params [2, \"files_trashbin\\\/files\\\/test4.d1683781747\", \"2d3b579bb2c341540e887c53e578e823\", \"test4.d1683781747\", 384, 388]:\n\nSQLSTATE[HY000]: General error: 5 database is locked: {\"Exception\":\"Doctrine\\\\DBAL\\\\Exception\\\\LockWaitTimeoutException\",\"Message\":\"An exception occurred while executing 'UPDATE \\\"oc_filecache\\\" SET \\\"storage\\\" = ?, \\\"path\\\" = ?, \\\"path_hash\\\" = ?, \\\"name\\\" = ?, \\\"parent\\\" =? WHERE \\\"fileid\\\" = ?' with params [2, \\\"files_trashbin\\\\\\\/files\\\\\\\/test4.d1683781747\\\", \\\"2d3b579bb2c341540e887c53e578e823\\\", \\\"test4.d1683781747\\\", 384, 388]:\\n\\nSQLSTATE[HY000]: General error: 5 database is locked\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/DBALException.php(182): Doctrine\\\\DBAL\\\\Driver\\\\AbstractSQLiteDriver->convertException()\\n#1 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/DBALException.php(159): Doctrine\\\\DBAL\\\\DBALException::wrapException()\\n#2 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Connection.php(2226): Doctrine\\\\DBAL\\\\DBALException::driverExceptionDuringQuery()\\n#3 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Connection.php(1313): Doctrine\\\\DBAL\\\\Connection->handleExceptionDuringQuery()\\n#4 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/DB\\\/Connection.php(191): Doctrine\\\\DBAL\\\\Connection->executeQuery()\\n#5 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Cache.php(620): OC\\\\DB\\\\Connection->executeQuery()\\n#6 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Cache.php(570): OC\\\\Files\\\\Cache\\\\Cache->moveFromCache()\\n#7 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/Cache\\\/Updater.php(195): OC\\\\Files\\\\Cache\\\\Cache->move()\\n#8 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Trashbin.php(346): OC\\\\Files\\\\Cache\\\\Updater->renameFromStorage()\\n#9 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Storage.php(199): OCA\\\\Files_Trashbin\\\\Trashbin::move2trash()\\n#10 \\\/var\\\/www\\\/owncloud\\\/apps\\\/files_trashbin\\\/lib\\\/Storage.php(135): OCA\\\\Files_Trashbin\\\\Storage->doDelete()\\n#11 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(1225): OCA\\\\Files_Trashbin\\\\Storage->rmdir()\\n#12 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(370): OC\\\\Files\\\\View->basicOperation()\\n#13 \\\/var\\\/www\\\/owncloud\\\/lib\\\/public\\\/Events\\\/EventEmitterTrait.php(50): OC\\\\Files\\\\View->OC\\\\Files\\\\{closure}(*** sensitive parameters replaced ***)\\n#14 \\\/var\\\/www\\\/owncloud\\\/lib\\\/private\\\/Files\\\/View.php(381): OC\\\\Files\\\\View->emittingCall()\\n#15 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/Directory.php(357): OC\\\\Files\\\\View->rmdir()\\n#16 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Tree.php(179): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Directory->delete()\\n#17 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(281): Sabre\\\\DAV\\\\Tree->delete()\\n#18 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/event\\\/lib\\\/WildcardEmitterTrait.php(89): Sabre\\\\DAV\\\\CorePlugin->httpDelete()\\n#19 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(472): Sabre\\\\DAV\\\\Server->emit()\\n#20 \\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(253): Sabre\\\\DAV\\\\Server->invokeMethod()\\n#21 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/Server.php(348): Sabre\\\\DAV\\\\Server->start()\\n#22 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/appinfo\\\/v2\\\/remote.php(31): OCA\\\\DAV\\\\Server->exec()\\n#23 \\\/var\\\/www\\\/owncloud\\\/remote.php(165): require_once('\\\/var\\\/www\\\/ownclo...')\\n#24 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/lib\\\/composer\\\/doctrine\\\/dbal\\\/lib\\\/Doctrine\\\/DBAL\\\/Driver\\\/AbstractSQLiteDriver.php\",\"Line\":39}"}
Video
https://github.com/owncloud/core/assets/41103328/604ff9c3-85c1-4c88-b423-c1ddac8a0483
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the batch deletion with about 50 folders, then inspect the SQLite lock trace through apps/files_trashbin/lib/Trashbin.php, apps/files_trashbin/lib/Storage.php, and lib/private/Files/Cache/Updater.php. Compare the batch behavior with the individual DELETE path. Done means all 50 deleted folders appear in the trash bin without folders being lost after retrying.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php, sqlite
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100