Author: todd Date: Wed Jan 4 19:50:41 2012 New Revision: 1227284 URL: http://svn.apache.org/viewvc?rev=1227284&view=rev Log: HDFS-2720. Fix MiniDFSCluster HA support to work properly on Windows. Contributed by Uma Maheswara Rao G.
Modified: hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/MiniDFSCluster.java Modified: hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt?rev=1227284&r1=1227283&r2=1227284&view=diff ============================================================================== --- hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt (original) +++ hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt Wed Jan 4 19:50:41 2012 @@ -81,3 +81,5 @@ HDFS-2714. Fix test cases which use stan HDFS-2692. Fix bugs related to failover from/into safe mode. (todd) HDFS-2716. Configuration needs to allow different dfs.http.addresses for each HA NN (todd) + +HDFS-2720. Fix MiniDFSCluster HA support to work properly on Windows. (Uma Maheswara Rao G via todd) Modified: hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/MiniDFSCluster.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/MiniDFSCluster.java?rev=1227284&r1=1227283&r2=1227284&view=diff ============================================================================== --- hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/MiniDFSCluster.java (original) +++ hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/MiniDFSCluster.java Wed Jan 4 19:50:41 2012 @@ -601,10 +601,13 @@ public class MiniDFSCluster { } } - // Now start all the NNs in this nameservice. + // Now format first NN and copy the storage directory from that node to the others. int i = 0; + Collection<URI> prevNNDirs = null; + int nnCounterForFormat = nnCounter; for (NNConf nn : nameservice.getNNs()) { - initNameNodeConf(conf, nsId, nn.getNnId(), manageNameDfsDirs, nnCounter); + initNameNodeConf(conf, nsId, nn.getNnId(), manageNameDfsDirs, + nnCounterForFormat); boolean formatThisOne = format; if (format && i++ > 0) { @@ -613,11 +616,21 @@ public class MiniDFSCluster { // block pool ID, etc. Instead, copy the name dirs // from the first one. formatThisOne = false; - copyNameDirs(getConfiguration(nnCounter - 1), conf); + assert (null != prevNNDirs); + copyNameDirs(prevNNDirs, FSNamesystem.getNamespaceDirs(conf), conf); } - createNameNode(nnCounter++, conf, numDataNodes, formatThisOne, - operation, clusterId, nsId, nn.getNnId()); + nnCounterForFormat++; + if (formatThisOne) { + NameNode.format(conf); + } + prevNNDirs = FSNamesystem.getNamespaceDirs(conf); + } + // Start all Namenodes + for (NNConf nn : nameservice.getNNs()) { + initNameNodeConf(conf, nsId, nn.getNnId(), manageNameDfsDirs, nnCounter); + createNameNode(nnCounter++, conf, numDataNodes, false, operation, + clusterId, nsId, nn.getNnId()); } } @@ -655,10 +668,8 @@ public class MiniDFSCluster { } } - private void copyNameDirs(Configuration srcConf, Configuration dstConf) - throws IOException { - Collection<URI> srcDirs = FSNamesystem.getNamespaceDirs(srcConf); - Collection<URI> dstDirs = FSNamesystem.getNamespaceDirs(dstConf); + private void copyNameDirs(Collection<URI> srcDirs, Collection<URI> dstDirs, + Configuration dstConf) throws IOException { URI srcDir = Lists.newArrayList(srcDirs).get(0); FileSystem dstFS = FileSystem.getLocal(dstConf).getRaw(); for (URI dstDir : dstDirs) {