[ 
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)

Reply via email to