square / okhttp

Square’s meticulous HTTP client for the JVM, Android, and GraalVM.
https://square.github.io/okhttp/
Apache License 2.0
45.87k stars 9.16k forks source link

Expected a SETTINGS frame but was WINDOW_UPDATE #8524

Open Blarc opened 2 months ago

Blarc commented 2 months ago

Describe the bug When making a request to OpenAI, an IOException is thrown. The error java.lang.RuntimeException: java.io.IOException: Expected a SETTINGS frame but was WINDOW_UPDATE is indicative of a problem that likely arises at the level of the HTTP/2 protocol, within model.generate call.

Supposedly works fine on Windows 10, but not on Ubuntu 22.04 source.

Log and Stack trace tail_log.txt

To Reproduce I am not sure how to reproduce, since it doesn't always happen. The langchain4j is used as a dependency for IntelliJ plugin.

Expected behavior The request to OpenAI to go through.

Please complete the following information:

Additional context https://github.com/Blarc/ai-commits-intellij-plugin/issues/226

yschimke commented 2 months ago

Does it happen for you, or for some other developer? Are there any proxies in the way, like charles?

Anything that might be affecting the stream at the http/2 layer?

Blarc commented 2 months ago

Maybe @Trileon12 can provide that information, since he reported the issue.

Trileon12 commented 2 months ago

Actually, on Ubuntu, I don't use a proxy (i mean ide proxy) because when I do, I receive a different error related to unsuccessful proxy authentication. But... at the router level, split tunneling is used, and requests to this server are currently routed through a WireGuard vpn connection. Could this be causing the issue? Interestingly, on Windows, the same application in the same LAN works without triggering the "WINDOW_UPDATE" error. Additionally, it also works with proxy settings enabled in the ide without any issues.

yschimke commented 2 months ago

Wireguard should be at a lower layer, so shouldn't intercept any http/2 traffic

yschimke commented 2 months ago

Unless we can reproduce, it's going to be hard to fix.

You may want to provide an option to force http/1.1 in the OkHttp client. Or clearing the proxy in code as an option, see if that fixes the auth issue.