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