You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2016/07/01 12:56:11 UTC
[jira] [Commented] (FLINK-4096) Nested FileOutputStream is not
closed in JarFileCreator
[ https://issues.apache.org/jira/browse/FLINK-4096?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15358915#comment-15358915 ]
ASF GitHub Bot commented on FLINK-4096:
---------------------------------------
Github user zentol commented on a diff in the pull request:
https://github.com/apache/flink/pull/2172#discussion_r69295166
--- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/util/JarFileCreator.java ---
@@ -189,33 +189,33 @@ public synchronized void createJarFile() throws IOException {
this.outputFile.delete();
}
- final JarOutputStream jos = new JarOutputStream(new FileOutputStream(this.outputFile), new Manifest());
- final Iterator<Class<?>> it = this.classSet.iterator();
- while (it.hasNext()) {
+ try ( JarOutputStream jos = new JarOutputStream(new FileOutputStream(this.outputFile), new Manifest())) {
+ final Iterator<Class<?>> it = this.classSet.iterator();
+ while (it.hasNext()) {
- final Class<?> clazz = it.next();
- final String entry = clazz.getName().replace('.', '/') + CLASS_EXTENSION;
+ final Class<?> clazz = it.next();
+ final String entry = clazz.getName().replace('.', '/') + CLASS_EXTENSION;
- jos.putNextEntry(new JarEntry(entry));
+ jos.putNextEntry(new JarEntry(entry));
- String name = clazz.getName();
- int n = name.lastIndexOf('.');
- String className = null;
- if (n > -1) {
- className = name.substring(n + 1, name.length());
- }
- //Using the part after last dot instead of class.getSimpleName() could resolve the problem of inner class.
- final InputStream classInputStream = clazz.getResourceAsStream(className + CLASS_EXTENSION);
+ String name = clazz.getName();
+ int n = name.lastIndexOf('.');
+ String className = null;
+ if (n > -1) {
+ className = name.substring(n + 1, name.length());
+ }
+ //Using the part after last dot instead of class.getSimpleName() could resolve the problem of inner class.
+ final InputStream classInputStream = clazz.getResourceAsStream(className + CLASS_EXTENSION);
- int num = classInputStream.read(buf);
- while (num != -1) {
- jos.write(buf, 0, num);
- num = classInputStream.read(buf);
- }
+ int num = classInputStream.read(buf);
+ while (num != -1) {
+ jos.write(buf, 0, num);
+ num = classInputStream.read(buf);
+ }
- classInputStream.close();
- jos.closeEntry();
+ classInputStream.close();
+ jos.closeEntry();
+ }
}
- jos.close();
--- End diff --
close() is now never called.
> Nested FileOutputStream is not closed in JarFileCreator
> -------------------------------------------------------
>
> Key: FLINK-4096
> URL: https://issues.apache.org/jira/browse/FLINK-4096
> Project: Flink
> Issue Type: Bug
> Reporter: Ted Yu
> Assignee: Ivan Mushketyk
> Priority: Minor
>
> {code}
> final JarOutputStream jos = new JarOutputStream(new FileOutputStream(this.outputFile), new Manifest());
> {code}
> When jos is closed, the FileOutputStream is not automatically closed.
> FileOutputStream should be closed explicitly.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)