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
Requesting large ranges in webdav results in poor performance #15321
Comments
I have found the culprit, it's in upstream sabredav: /lib/DAV/CorePlugin.php, line 178 Apparently it implements ranges by creating a temporary stream and blindly copying. I will attempt to submit a pull request there, and we will see how it goes. |
#14383 might be helpful for this too. |
@dratini0 are you still seeing this in 8.1.4 or 8.2 which contain an updated Sabre version ? Did I understand well that you are using external storage with the type "local" ? That one should be seekable, so not sure why the seekable check would return false here. The symptoms you see would usually only be observed on non seekable external storages. |
@PVince81 I've updated Owncloud to version 8.2.1, but |
You mean https://github.com/owncloud/3rdparty/blob/stable8.2/sabre/dav/lib/DAV/CorePlugin.php#L177 ? Yeah, strange. I'll report this upstream. |
Hmm, looks like in Sabre 3 (the next major version) they got rid of the temporary stream https://github.com/fruux/sabre-dav/blob/master/lib/DAV/CorePlugin.php#L175 Here is the ticket for upgrading to Sabre 3: #17039 @evert can you confirm that Sabre 3 will not buffer/copy the whole stream into a temp stream for range requests like Sabre 2 did ? |
It looks like that never made it into the changelog, but I fixed that now. We did indeed improve this, in this PR: https://github.com/fruux/sabre-dav/pull/623 Originally appeared in version 2.2.0-alpha4 |
Awesome to see this! :) |
Note that this was 100% by the OP of this ticket, @dratini0 |
Cool. I see that the fix is available starting with 3.0: https://github.com/fruux/sabre-dav/blob/3.0/lib/DAV/CorePlugin.php#L180 |
master is now on sabre 3.0 -> closing |
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
I was trying to mount a webdav share with GVFS, and then play a 10G video, hoping it would work, and it didn't. Turns out it requested ranges from the file, which OC apparently does not like.
Steps to reproduce
Expected behaviour
The download should start immediately
Actual behaviour
Owncloud went ahead to create a temporary file equal in size to the requested range, which took about a minute (happens for local files and local shares)
Server configuration
Operating system:
Debian 7.8 amd64
Web server:
nginx 1.6.2-5~bpo70+1
Database:
MySQL 5.5.41-0+wheezy1
PHP version:
PHP 5.4.39-0+deb7u2
ownCloud version: (see ownCloud admin page)
ownCloud 8.0.2-8
Updated from an older ownCloud or fresh install:
Have been rolling since 6.x
List of activated apps:
The content of config/config.php:
Are you using external storage, if yes which one: local
Are you using encryption: no
Are you using an external user-backend, if yes which one: none
Client configuration
Browser:
gvfs 1.22.2, netcat 1.105-7
Operating system:
Debian Jessie amd64
A request that jammed my owncloud: (the file is 10704943577 bytes long)
P. s.: Sorry, I haven't had the opportunity to try in a newer install, but I haven't seen any discussion regarding the issue.
The text was updated successfully, but these errors were encountered: