-
Notifications
You must be signed in to change notification settings - Fork 10
perf(jfr-datasource): refactor to perform uploads using streams #1152
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
perf(jfr-datasource): refactor to perform uploads using streams #1152
Conversation
03d6479 to
ca24167
Compare
|
This PR/issue depends on:
|
|
/build_test |
|
Workflow started at 11/18/2025, 12:33:20 PM. View Actions Run. |
|
No GraphQL schema changes detected. |
|
No OpenAPI schema changes detected. |
|
CI build and push: All tests pass ✅ |
ca24167 to
347c819
Compare
|
/build_test |
|
Workflow started at 11/28/2025, 10:30:30 AM. View Actions Run. |
|
No GraphQL schema changes detected. |
|
No OpenAPI schema changes detected. |
|
CI build and push: All tests pass ✅ |
347c819 to
e4f511e
Compare
Welcome to Cryostat! 👋
Before contributing, make sure you have:
mainbranch[chore, ci, docs, feat, fix, test]To recreate commits with GPG signature
git fetch upstream && git rebase --force --gpg-sign upstream/mainSee #1151
Based on #1151
Description of the change:
Avoid the old flow of copying recording file contents to a local temp file before POSTing to jfr-datasource. For archived recordings when not using presigned URL transfers this would involve Cryostat downloading the archived JFR file from storage into a temp file, then POSTing that file. For active recordings Cryostat would open a remote target connection and stream the recording contents into a temp file, then POST that file. The new flow avoids writing a temp file and uses streamed data instead - either the HTTP GET response stream from storage, or the target connection recording data stream, and sends the POST to jfr-datasource by directly piping that stream.
Motivation for the change:
Avoid the need for Cryostat's tmp space to be able to accommodate arbitrarily large JFR file data. This also reduces overall "view in Grafana" action request latency since the data does not need to be fully written to tmp file before beginning to upload it to the datasource.
How to manually test:
./smoketest.bash -O -t quarkus-cryostat-agent