build(deps): switch S3 HTTP client from urlconnection to apache #607
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Welcome to Cryostat! 👋
Before contributing, make sure you have:
main
branch[chore, ci, docs, feat, fix, test]
To recreate commits with GPG signature
git fetch upstream && git rebase --force --gpg-sign upstream/main
See cryostatio/cryostat-helm#184
Description of the change:
Switches out the HTTP client library used by the S3 (storage) client from JDK urlconnection to Apache HTTP.
Motivation for the change:
https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration.html
Apache HTTP should be more performant and robust than urlconnection, and supports the full S3 API feature set.
After splitting out the storage container to a separate Deployment with a separate Service I observe some connection flakiness and instability, where Cryostat API requests dealing with storage (archive actions, querying custom event templates) often respond with sporadic HTTP 500 responses. Retrying identical requests tends to work, so I wonder if switching out the backing HTTP client will help stabilize this.
How to manually test:
quay.io/andrewazores/cryostat:s3-apache-1
helm install cryostat --set authentication.openshift.enabled=true --set core.route.enabled=true --set core.image.repository=quay.io/andrewazores/cryostat --set core.image.tag=s3-apache-1 --set pvc.enabled=true ./charts/cryostat/