jruby-openssl icon indicating copy to clipboard operation
jruby-openssl copied to clipboard

"read would block" when communicating with external APIs

Open gillesbergerp opened this issue 1 year ago • 7 comments

Basic Info

  • Faraday Version: 2.11.0
  • Ruby Version: jruby 9.4.8.0 (3.1.4) 2024-07-02 4d41e55a67 OpenJDK 64-Bit Server VM 21.0.4+7-LTS on 21.0.4+7-LTS +jit [x86_64-linux]
  • JRuby OpenSSL Version: 0.15.0

Issue description

We occasionally and intermittently face Faraday::SSLErrors with the message read would block when communicating with external endpoints. Our application is deployed as an ECS on EC2 service and (so far) we were unable to reproduce the issue locally or in our staging environment.

Steps to reproduce

Unfortunately, we haven't managed to reproduce the issue locally. There are certain requests to external APIs that fail very consistently, however.

gillesbergerp avatar Sep 29 '24 01:09 gillesbergerp

We also ran into this problem, it seems like switching from TLS 1.3 to TLS 1.2 mitigates the issue at least sometimes.

jpsikorra avatar Oct 21 '24 08:10 jpsikorra

@jpsikorra, when you say "sometimes", do you suggest that it doesn't occur anymore at all for some sites/endpoints (but still does for others) or that the overall rate is lower?

gillesbergerp avatar Oct 21 '24 08:10 gillesbergerp

I don't see the issue with TLS 1.2, but cannot be 100% certain that it will never occur.

jpsikorra avatar Oct 22 '24 14:10 jpsikorra

Also see https://github.com/jruby/jruby-openssl/issues/305

jpsikorra avatar Oct 30 '24 12:10 jpsikorra

I can confirm that we had success with switching to TLS 1.2 for one external API as well

gillesbergerp avatar Oct 30 '24 12:10 gillesbergerp

Bump this up in priority... seems more users have been seeing it lately with JRuby 9.4.12.0.

Has anyone managed to get an isolated reproduction of this issue?

headius avatar May 14 '25 07:05 headius

I got the issue when using JRuby9.4.12.0, JRuby9.4.1.0 and JRuby9.2.21.0 with rest-client. But when I downgraded to JRuby9.2.20.0 then the issue disappeared. The issue only happens when calling APIs which take much time to process. I also compared jruby-openssl version which are using by JRuby versions:

  • JRuby9.4.12.0 & jruby-openssl 0.15.0
  • JRuby9.4.1.0 & jruby-openssl 0.14.1
  • JRuby9.2.21.0 & jruby-openssl 0.12.2
  • JRuby9.2.20.0 & jruby-openssl 0.11.0 (the jruby-openssl 0.11.0 didn't get the issue) I am not sure whether the issue relate to jruby-openssl. Currently I am using JRuby9.2.20.0 and It works fine.

hung-nguyen-hoang avatar Jul 02 '25 07:07 hung-nguyen-hoang