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