-
-
Notifications
You must be signed in to change notification settings - Fork 4.4k
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
drive: intermittent crashes with: stream error: stream ID ; INTERNAL_ERROR #3631
Comments
Before this change when rclone was compiled with go1.13 it used HTTP/2 to contact drive by default. This causes lockups and INTERNAL_ERRORs from the HTTP/2 code. This is a workaround disabling the HTTP/2 code on an option. It can be re-enabled with `--drive-disable-http2=false` See #3631
It can be a good idea to add drive test involving simple upload/download scenario with --drive-disable-htp2=false (or internal test with similar setting), ignore it in config.yaml and collect long-term stats. |
I think setting up a reproduction test is a good idea... I tried with a simple mount which did directory listings, but I think it needs more than that. I haven't had time to set up something more complex yet. |
Just FYI |
Interesting. So this whole thing could simply be a temporary issue outside of rclone then. I will be re-enabling HTTP/2 for my normal use and seeing how it goes - if it has stabilized ect. |
It could be, yes. There is probably a bug in the HTTP/2 code in the go standard library which is being triggered by a bug in the google drive HTTP/2 code - that is my guess!
Great - thanks. |
While using --drive-disable-htp2=false I got this today it did not result in a full stall however. it managed to recover it seems. I will set |
@thestigma I just uploaded v1.50.1 which was compiled with go1.13.4. This has an HTTP/2 fix which could plausibly be a fix for this issue. |
Cool! I assume that flag is still "true" by default for the time being - until we can more clearly verify it works again? |
Thank you.
I won't change the default until we are sure it is working properly. |
Just want to leave a note here - that It's been a very long time now since I've seen this same error. |
Thank you for the report :-) If we want to change the default then we should probably get a bit more testing by other users. |
I'm going to turn back on http2 and see how things work. |
Great idea - thanks. |
Hmm, I got a read error already with almost no load going on but it did seem to retry I think.
|
:-( Which rclone were you trying? It would be worth trying the latest beta if you didn't already. |
Experiencing CURL issues with Kodi streaming as Traefik advertises it's HTTP/2 compatible, even if the proxied client isn't. This still has issues with instability but resolves more. See rclone/rclone#3631
Just an update on this, I have not noticed the same kind of errors for quite a few months now and I have been using the latest builds for that duration. However, I have noticed speeds being slower when multiple files are being uploaded via the mount with HTTP/2 enabled. Some numbers for the same:
|
Good news that you didn't see the issue any more. Which VFS mode are you using with the mount? |
This is with the newly revamped full mode. |
Do you think we should be re-enabling this? Your speed tests don't look terribly encouraging. I wonder if the http2 backend can be persuaded to open more connections as I suspect it just opens one which is being swamped by the upload. How many connections did rclone have open - can you check with |
I am not sure whether this is an issue with the Google servers or some OS tuning. Preferably someone else can also chime in with their test results (with multiple transfers) to see how it's working for them. I would prefer not to enable it by default unless other folks report in with encouraging results.
Will post results within a day or so once I have some downtime to restart the mount and enable HTTP/2 again. |
So, tried again on a different server with Without HTTP/2: 4 Connections (on netstat) & Total Speed: 320 MB/s This is a drastic difference, so we should probably no enable it by default for at least this release and continue evaluating it in the future to see if it ever improves. |
@darthShadow thanks for testing. That is a very big difference! I found a go bug which looks relevant here: golang/go#37373 I added a comment there. |
Excellent, thanks. Will keep an eye on that issue. |
Can this help here? golang/go#37373 (comment) |
Disabling keepalives will kill the performance of the short transactions, like listing directories which I think would make it unusable. If we could disable keepalives for the large transactions only that would work. I can't think of an easy way of doing that but it might be possible... |
In the forum issues were reported with v1.49.4.
The issues looked like this
This is an internal error from the go standard library HTTP/2 code.
v1.49.4 was accidentally compiled with go1.13 which enabled http/2 by default for google drive for reasons not clear from the changelog.
Rolling the compiler back to go1.12 with no other code changes fixes the problem which is what was released as v1.49.5
An attempt at a workaround making these errors retriable was put in f9f9d50 but this did not seem effective.
Problem statement
The text was updated successfully, but these errors were encountered: