HDFS-2720. Fix MiniDFSCluster HA support to work properly on Windows. Contributed by Uma Maheswara Rao G.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/HDFS-1623@1227284 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Todd Lipcon 2012-01-04 19:50:41 +00:00
parent cd81cc6664
commit d004ddee76
2 changed files with 22 additions and 9 deletions

View File

@ -81,3 +81,5 @@ HDFS-2714. Fix test cases which use standalone FSNamesystems (todd)
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)

View File

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