Chuan Liu created HDFS-5099:
-------------------------------

             Summary: Namenode#copyEditLogSegmentsToSharedDir should close 
EditLogInputStreams upon finishing
                 Key: HDFS-5099
                 URL: https://issues.apache.org/jira/browse/HDFS-5099
             Project: Hadoop HDFS
          Issue Type: Bug
    Affects Versions: 3.0.0, 2.3.0
            Reporter: Chuan Liu
            Assignee: Chuan Liu


In {{Namenode#copyEditLogSegmentsToSharedDir()}} method, we open a collection 
of EditLogInputStreams to read and apply to shareEditlog. In {{readOpt()}} 
method, we will open the underlying log file on disk. After applying all the 
opts, we do not close the collection of streams currently. This lead to a file 
handle leak on Windows as later we would fail to delete those files.

This happens in TestInitializeSharedEdits test case, where we explicitly called 
{{Namenode# initializeSharedEdits()}}, where 
{{copyEditLogSegmentsToSharedDir()}} is used. Later we fail to create new 
MiniDFSCluster with the following exception.
{noformat}
java.io.IOException: Could not fully delete 
C:\hdc\hadoop-hdfs-project\hadoop-hdfs\target\test\data\dfs\name1
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.createNameNodesAndSetConf(MiniDFSCluster.java:759)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:644)
        at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:334)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster$Builder.build(MiniDFSCluster.java:316)
        at 
org.apache.hadoop.hdfs.server.namenode.ha.TestInitializeSharedEdits.setupCluster(TestInitializeSharedEdits.java:68)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
…
{noformat}


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to