fix(archive): sanitize target alias when writing file #668
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.
Fixes #665
The target alias is currently included as-is in the destination filename when writing a JFR file to disk. This can be problematic since the target alias can contain characters like '/', for example
/deployments/quarkus-run.jar
in the quarkus-test sample application. The solution presented here is to URL encode the alias before including it in the destination filename, so the alias is transformed into ex.%2Fdeployments%2Fquarkus-run.jar
.To test:
Check the current behaviour upstream with
sh smoketest.sh
. Create a new recording on the quarkus-test application, then attempt to archive this recording. The request will fail with an AccessDeniedException.Then retry this procedure but starting from
CRYOSTAT_IMAGE=quay.io/andrewazores/cryostat:sanitize-archive-alias sh smoketest.sh
. The recording should be successfully archived with the alias encoded. Archiving recordings on the other targets, which already have "safe" aliases, should produce the same resultant archive filename as before.