Skip to content
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

Close JarFile #1970

Merged
merged 4 commits into from
Jan 5, 2021
Merged

Close JarFile #1970

merged 4 commits into from
Jan 5, 2021

Conversation

laurit
Copy link
Contributor

@laurit laurit commented Dec 30, 2020

No description provided.

Copy link
Contributor

@anuraaga anuraaga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, closing looks good but wondering if we need the other change

@@ -127,10 +128,9 @@ private static String getPackageName(String className) {
}

private static Manifest getManifest(URL url) {
try {
JarFile jarFile = new JarFile(url.getFile());
try (JarFile jarFile = new JarFile(url.toURI().getPath())) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to change the url.getFile()?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If path contains a space then url.getFile() will leave it as %20, url.toURI().getPath() decodes it as an actual space character

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it cause a problem? I'm surprised the more direct way of getting a File would cause JarFile constructor to fail, if you're seeing an exception let's add a comment above this line on what exception we are trying to prevent with the indirect code.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

URL.getFile returns a String. As the url is constructed with new File(exporterJar).toURI().toURL(); which encodes space -> %20 when getting file from url we should use a way that translates %20 back to space.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it sounds like there is a problem when the path has a space. If so yeah we need to fix it :) But it's confusing, so we need at least a comment documenting the failure case. Even better is a test that fails before the change and passes after, then no one will accidentally revert and regress.

Alternatively, we can keep the code similarly as before and file an issue - the PR title is about closing the jar file but is doing more than just that. It's ok but we need to do it completely, otherwise let's not make too many changes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added test

Copy link
Contributor

@anuraaga anuraaga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

Copy link
Member

@trask trask left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice 👍

@trask trask merged commit cc9c0f9 into open-telemetry:master Jan 5, 2021
@laurit laurit deleted the close-jar-file branch January 5, 2021 10:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants