Comments (3)
The redis
Gem got an update to 4.7.1 (https://github.com/redis/redis-rb/releases/tag/v4.7.1) which contains a workaround (redis/redis-rb#1107) for this problem, which we've verified is due to incorrect Redis server behavior during connection closures (redis/redis#10915).
Please bundle update
your redis
Gem to the latest version to get the fix, and push that up to Heroku.
from base-images.
Some more context about the issue:
- Heroku-22 is based upon Ubuntu 22.04, which comes with OpenSSL 3. (Mentioned in the Heroku-22 stack docs)
- OpenSSL 3 (in the client) is more strict when it comes to how servers close connections. This is by design - more details can be seen in openssl/openssl#11378 and openssl/openssl#11381.
- Clients using OpenSSL 3 can choose to return to the old more-lenient behaviour by enabling the SSL_OP_IGNORE_UNEXPECTED_EOF option.
- Some language runtimes have chosen to enable this
SSL_OP_IGNORE_UNEXPECTED_EOF
option to reduce disruption. For example Python (python/cpython#25309) and PHP (php/php-src#8369). And some languages have their own TLS implementations so aren't affected as they aren't using OpenSSL (for example Go and Java). Lastly, some languages are shipped with statically compiled binaries so don't use the OpenSSL version in the underlying OS, but whatever they were compiled with upstream (eg: Node.js statically compiles OpenSSL and only switched to OpenSSL 3 in Node.js v17+). - For Heroku-supported languages, this pretty much just leaves Ruby as the one language that uses system OpenSSL, and also doesn't set the backwards compatibility flag upstream. This is why the issue affects Ruby users more than others. For upstream discussion about Ruby and OpenSSL 3, see ruby/openssl#399.
- Whilst this issue was originally filed about Redis (since it turns out Redis server didn't close connections cleanly: redis/redis#10915), Redis server won't be the only server implementation out there that doesn't close connections properly.
As such:
- There is therefore nothing Heroku-specific about this issue - it affects all OpenSSL 3 (and thus Ubuntu 22.04) usage.
- There absolutely will be other server implementations out there that are affected (and not just Redis).
Could you try filing an issue upstream against whatever server you are connecting to, to see if they can fix their server implementation? In the issue be sure to say it's a problem with OpenSSL 3 which is the default on Ubuntu 22.04, rather than framing it only as "Heroku-22", since otherwise they may think it's a Heroku-specific issue and not see why they need to fix their server. Also feel free to CC me on any such issues so I can help add more detail.
from base-images.
This issue is broader than just redis. I see it in general httpclient
usage.
from base-images.
Related Issues (20)
- Question: Heroku-20 general release date HOT 4
- ImageMagick default resource limits are surprisingly low HOT 5
- Installation of gettext fails on heroku-20; heroku-18 is fine HOT 5
- Postgres 13
- The Heroku-20-Build Ruby version does not match the Heroku Platform Ruby. HOT 3
- ARM64 support for image HOT 20
- How does one use Heroku-20 stack for local development WITH the same ruby/bundler versions as Heroku defaults to HOT 5
- ImageMagick "area" resource limit should be in pixels ? HOT 3
- heroku/heroku:22 doesn't download standard library HOT 1
- Stack 22 breaks azure cognitive services package HOT 2
- env PYTHONHOME trigger import error HOT 1
- Deprecated usage of apt-key.
- Add missing CNB Labels
- Update BUILD.md with multi-arch / heroku-24 info
- Duplicate APT sources warning when using APT on Heroku-24 HOT 3
- Reduce size of Heroku-24 run and build images HOT 2
- Heroku-24: Implications of the switch to separate Linux users for build vs run images HOT 10
- Stable tags for heroku/heroku:24 architecture variants HOT 2
- Heroku-24: Custom sources list causes APT to pull packages lists for multiple architectures
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from base-images.