-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
"Could not check out a connection in 5.0 seconds" - YouTube servers stopped serving HTTP3/QUIC #2577
Comments
This comment has been minimized.
This comment has been minimized.
Probably linked to an undergoing Google outage in Europe : https://news.ycombinator.com/item?id=29197832 |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Edit: as a fix has been merged to master I will restrict my instance back for my own personal usage so you will see 403s on the URL below. This instance was never supposed to be public to begin with and this was just a temporary exception. Apologies for the inconvenience. @syeopite your branch has been deployed to https://invidious.rjevski.io and appears to work. Feel free to use it in the meantime until other instances are updated. Just FYI, this instance does log minimal personal data such as IP addresses and user-agents in HTTP logs, though I have no incentive to use any of it and it's just there for debug purposes. |
This comment has been minimized.
This comment has been minimized.
Also poke @vituperative and @Cysea |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
All done, thanks, any idea why Google shut down quic support? |
@RiversideRocks We have no idea, it doesn't even make sense considering they use it themselves. It's just weird. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@RiversideRocks @TheFrenchGhosty there's been outages on Google services today so I wonder if disabling QUIC is a mitigation strategy for them (maybe QUIC infrastructure is dead but legacy HTTP isn't)? |
Probably QUIC/HTTP3 doesn't even work:
And youtube servers are trying to tell every browser to stop using QUIC/HTTP3 with this HTTP header:
More about alt-svc here: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Alt-Svc |
Maybe they are trying to limit UDP packets to determine the problem? No idea |
Also, would it be possible to make the code fall back to HTTP/2 or HTTP/1.1 if it detects QUIC is down? |
Not easily, but I guess we will probably stop using QUIC because the native HTTP client in crystal is much more stable than lsquic. @syeopite thoughts? |
I did a fresh docker update about 20 minutes ago and am also seeing this error
Edit - Is the latest docker on quay.io up to date with the changes? |
Check if use_quic is set to true in the config file. If that's the case then turn it to false. |
Absolutely perfect. This was exactly the next step I needed to get it going again. Thanks for the super quick reply |
Built from d214a0b, works fine for me ( |
Given UDP can also be blocked, I'd highly suggest falling back to a prior version of TCP when HTTP/3 fails. From the HTTP/3 spec, section 3: |
While I completely agree with you, the current state of the invidious code is not made to support an automatic fallback to HTTP1/HTTP2 in TCP. That's why we allow the user, for example if UDP is blocked, to switch from QUIC to HTTP1 with the setting |
Closing as YouTube just recently restored QUIC connections.
You may now turn |
Bonjour @unixfox Of course, I compiled curl --with-nghttp3 --with-ngtcp2 and openssl-quic library in Ubuntu 16.04 i386, it wasn't easy though. You probably have a package from AUR with quiche (rust)? UPD1: Yea, I see from the binary name that you took from AUR. So I have a pretty rare alternate implementation. It works too, but requires c++17. UPD2: I also compiled curl with quiche (boringssl). It's easier because it uses only one external quiche lib and enough c++11/14. UPD3: People are so fond of not saying anything back, but I'm used to it. |
This update disables QUIC by default which fixes Invidious not loading anything except for the home page due to YouTube no longer accepting HTTP/3 (Upstream Issue: iv-org/invidious#2577). It therefore uses Crystal’s internal HTTP client, which failed because the statically linked boringssl (required by lsquic) overrides OpenSSL’s CA certificate file location. This is fixed by applying the same patch to boringssl that is applied to openssl for using the correct CA certificate file.
By @unixfox:
Make sure to also turn to false
use_quic
in the config file if updating doesn't fix the bug. Removing the parameteruse_quic
from the config file works too.If you use a public instance, and it doesn't work anymore, then please try to use another one from this list: https://instances.invidious.io
Basically, Google servers stopped serving HTTP3/QUIC and Invidious used to exclusively use HTTP3/QUIC for connecting to YouTube servers. That's why Invidious didn't really work anymore.
Original issue:
Describe the bug
Can't load anything on any invidious instance (edit: except the home page)
Steps to Reproduce
Logs
Title:
Could not check out a connection in 5.0 seconds (DB::PoolTimeout)
Date:
2021-11-12T10:31:35Z
Route:
/search?q=test+search
Version:
2021.11.08-21879da8 @ master
Backtrace
The text was updated successfully, but these errors were encountered: