-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Concurrent PROPFINDs result in error 500 #13705
Comments
Extra 2: this is no problem for stable7. |
Solution: Don't use SQLite. @DeepDiver1975 Related to our recent discussions with @ogoffart and Co. |
Sounds fast and clean :) |
Guys. This is a bug. There is absolutely no technical reason why ownCloud should return a 500 here. The database should be properly locked and the second request should be answered as soon as the first one is done. This is how ownCloud worked for years. |
indeed - the question is how to solve this and at the end what will be the user experience. The by-design--behavior of sqlite being not concurrent accessible will result in all operations of all users and all clients to be executed sequentially which will be observed as "ownCloud is damn slow" Let me see if there is a solution to the database locked issue (FYI: drupal is struggling with this issue for 4 years now with no solution at hand - need to take a closer look - https://www.drupal.org/node/1120020). My suggestion regarding the user experience would be to disable the webdav interface and/or sync in case sqlite is used. To protect us and the user base. |
...if the busy-wait comes back in as per #13615 (that used to be in oc5 but then got kicked out) More context for @karlitschek in owncloud/client#2743 Additionally toning down parallelism also helps with timeouts where e.g. a long running move takes several minutes. |
@carlaschroder Add a release note please about downloading folders in SQLite with Android as a known issue. And discouraging the use of SQLite in production. |
We should fix the issue before we discourage the usage of a database. |
This issue is still happening. The mentionned fix is only for files. The problem above is when updating the config concurrently. I suspect there might not be any lock timeout in place which might explain why it directly fails. |
(the config option for the timeout) |
Another possible fix is to fail gracefully (ignore the error) if the "lastlogin" value cannot be updated due to locking. |
Okay, I tried ignoring the "lastlogin" exception and the propfinds all go through. So at least we have a quickfix for this specific situation. Next step: try the timeout option. |
No luck with #13615, needs further research |
So, if all the requests were reusing the same session cookie, all the the PROPFINDs would work? @rperezb , seems a reason to finally enable the cookie support. |
Yes, that's another "workaround". |
@davivel great for next version expected this sprint |
Here it is: https://github.com/owncloud/core/blob/master/lib/private/allconfig.php#L180 Unclosed cursor, PR is on the way |
Fix is here: #13772 |
Thanks @davivel for this nice to test script 👍 |
Thanks, guys. Android app working again as expected. |
@davivel Wondering..does the Android client do multiple PROPFINDs (or other requestz) that all re-authenticate? It does not use cookies to keep the auth? |
At this moment, it does. But right now we only need to change a flag to fix that. Next version (coming soon) should use cookies. |
Steps to reproduce
Expected behaviour
All requests should finish with HTTP code 207; files out1.txt to out5.txt should contain the properties of the folder /c/a/, something like:
Actual behaviour
4 of 5 methods finish in 500 Internal Error.
Server configuration
ownCloud version: - 8.0.0.4
daily/master
Logs
ownCloud log (data/owncloud.log)
One message
is shown per failed request.
Extra
Not only affecting PROPFIND requests, Android client is receiving 500 Internal error when downloads (GET) and refresh (PROPFIND) are run in parallel .
The text was updated successfully, but these errors were encountered: