HDFS-3682. MiniDFSCluster#init should provide more info when it fails. Contributed by Todd Lipcon
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1395385 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d974127cf2
commit
e32af6034b
@ -262,6 +262,9 @@ Release 2.0.3-alpha - Unreleased
|
|||||||
HDFS-3483. Better error message when hdfs fsck is run against a ViewFS
|
HDFS-3483. Better error message when hdfs fsck is run against a ViewFS
|
||||||
config. (Stephen Fritz via atm)
|
config. (Stephen Fritz via atm)
|
||||||
|
|
||||||
|
HDFS-3682. MiniDFSCluster#init should provide more info when it fails.
|
||||||
|
(todd via eli)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
@ -624,14 +624,20 @@ private void initMiniDFSCluster(
|
|||||||
}
|
}
|
||||||
|
|
||||||
federation = nnTopology.isFederated();
|
federation = nnTopology.isFederated();
|
||||||
|
try {
|
||||||
createNameNodesAndSetConf(
|
createNameNodesAndSetConf(
|
||||||
nnTopology, manageNameDfsDirs, manageNameDfsSharedDirs,
|
nnTopology, manageNameDfsDirs, manageNameDfsSharedDirs,
|
||||||
enableManagedDfsDirsRedundancy,
|
enableManagedDfsDirsRedundancy,
|
||||||
format, operation, clusterId, conf);
|
format, operation, clusterId, conf);
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
LOG.error("IOE creating namenodes. Permissions dump:\n" +
|
||||||
|
createPermissionsDiagnosisString(data_dir));
|
||||||
|
throw ioe;
|
||||||
|
}
|
||||||
if (format) {
|
if (format) {
|
||||||
if (data_dir.exists() && !FileUtil.fullyDelete(data_dir)) {
|
if (data_dir.exists() && !FileUtil.fullyDelete(data_dir)) {
|
||||||
throw new IOException("Cannot remove data directory: " + data_dir);
|
throw new IOException("Cannot remove data directory: " + data_dir +
|
||||||
|
createPermissionsDiagnosisString(data_dir));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -647,6 +653,27 @@ private void initMiniDFSCluster(
|
|||||||
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a debug string which can help diagnose an error of why
|
||||||
|
* a given directory might have a permissions error in the context
|
||||||
|
* of a test case
|
||||||
|
*/
|
||||||
|
private String createPermissionsDiagnosisString(File path) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
while (path != null) {
|
||||||
|
sb.append("path '" + path + "': ").append("\n");
|
||||||
|
sb.append("\tabsolute:").append(path.getAbsolutePath()).append("\n");
|
||||||
|
sb.append("\tpermissions: ");
|
||||||
|
sb.append(path.isDirectory() ? "d": "-");
|
||||||
|
sb.append(path.canRead() ? "r" : "-");
|
||||||
|
sb.append(path.canWrite() ? "w" : "-");
|
||||||
|
sb.append(path.canExecute() ? "x" : "-");
|
||||||
|
sb.append("\n");
|
||||||
|
path = path.getParentFile();
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
private void createNameNodesAndSetConf(MiniDFSNNTopology nnTopology,
|
private void createNameNodesAndSetConf(MiniDFSNNTopology nnTopology,
|
||||||
boolean manageNameDfsDirs, boolean manageNameDfsSharedDirs,
|
boolean manageNameDfsDirs, boolean manageNameDfsSharedDirs,
|
||||||
boolean enableManagedDfsDirsRedundancy, boolean format,
|
boolean enableManagedDfsDirsRedundancy, boolean format,
|
||||||
|
Loading…
Reference in New Issue
Block a user