HDFS-3484. hdfs fsck doesn't work if NN HTTP address is set to 0.0.0.0 even if NN RPC address is configured. Contributed by Aaron T. Myers
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1344909 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0719f5635d
commit
5f5072b408
|
@ -135,6 +135,9 @@ Release 2.0.1-alpha - UNRELEASED
|
||||||
HDFS-3441. Race condition between rolling logs at active NN and purging at standby.
|
HDFS-3441. Race condition between rolling logs at active NN and purging at standby.
|
||||||
(Rakesh R via umamahesh)
|
(Rakesh R via umamahesh)
|
||||||
|
|
||||||
|
HDFS-3484. hdfs fsck doesn't work if NN HTTP address is set to
|
||||||
|
0.0.0.0 even if NN RPC address is configured. (atm via eli)
|
||||||
|
|
||||||
Release 2.0.0-alpha - UNRELEASED
|
Release 2.0.0-alpha - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -712,9 +712,10 @@ public class DFSUtil {
|
||||||
* @param httpsAddress -If true, and if security is enabled, returns server
|
* @param httpsAddress -If true, and if security is enabled, returns server
|
||||||
* https address. If false, returns server http address.
|
* https address. If false, returns server http address.
|
||||||
* @return server http or https address
|
* @return server http or https address
|
||||||
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public static String getInfoServer(
|
public static String getInfoServer(InetSocketAddress namenodeAddr,
|
||||||
InetSocketAddress namenodeAddr, Configuration conf, boolean httpsAddress) {
|
Configuration conf, boolean httpsAddress) throws IOException {
|
||||||
boolean securityOn = UserGroupInformation.isSecurityEnabled();
|
boolean securityOn = UserGroupInformation.isSecurityEnabled();
|
||||||
String httpAddressKey = (securityOn && httpsAddress) ?
|
String httpAddressKey = (securityOn && httpsAddress) ?
|
||||||
DFS_NAMENODE_HTTPS_ADDRESS_KEY : DFS_NAMENODE_HTTP_ADDRESS_KEY;
|
DFS_NAMENODE_HTTPS_ADDRESS_KEY : DFS_NAMENODE_HTTP_ADDRESS_KEY;
|
||||||
|
@ -731,8 +732,14 @@ public class DFSUtil {
|
||||||
} else {
|
} else {
|
||||||
suffixes = new String[2];
|
suffixes = new String[2];
|
||||||
}
|
}
|
||||||
|
String configuredInfoAddr = getSuffixedConf(conf, httpAddressKey,
|
||||||
return getSuffixedConf(conf, httpAddressKey, httpAddressDefault, suffixes);
|
httpAddressDefault, suffixes);
|
||||||
|
if (namenodeAddr != null) {
|
||||||
|
return substituteForWildcardAddress(configuredInfoAddr,
|
||||||
|
namenodeAddr.getHostName());
|
||||||
|
} else {
|
||||||
|
return configuredInfoAddr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -664,8 +664,12 @@ public class FSNamesystem implements Namesystem, FSClusterStats,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Start services required in standby state */
|
/**
|
||||||
void startStandbyServices(final Configuration conf) {
|
* Start services required in standby state
|
||||||
|
*
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
void startStandbyServices(final Configuration conf) throws IOException {
|
||||||
LOG.info("Starting services required for standby state");
|
LOG.info("Starting services required for standby state");
|
||||||
if (!dir.fsImage.editLog.isOpenForRead()) {
|
if (!dir.fsImage.editLog.isOpenForRead()) {
|
||||||
// During startup, we're already open for read.
|
// During startup, we're already open for read.
|
||||||
|
|
|
@ -67,7 +67,8 @@ public class StandbyCheckpointer {
|
||||||
// This is for use in tests.
|
// This is for use in tests.
|
||||||
private static int canceledCount = 0;
|
private static int canceledCount = 0;
|
||||||
|
|
||||||
public StandbyCheckpointer(Configuration conf, FSNamesystem ns) {
|
public StandbyCheckpointer(Configuration conf, FSNamesystem ns)
|
||||||
|
throws IOException {
|
||||||
this.namesystem = ns;
|
this.namesystem = ns;
|
||||||
this.checkpointConf = new CheckpointConf(conf);
|
this.checkpointConf = new CheckpointConf(conf);
|
||||||
this.thread = new CheckpointerThread();
|
this.thread = new CheckpointerThread();
|
||||||
|
@ -78,8 +79,9 @@ public class StandbyCheckpointer {
|
||||||
/**
|
/**
|
||||||
* Determine the address of the NN we are checkpointing
|
* Determine the address of the NN we are checkpointing
|
||||||
* as well as our own HTTP address from the configuration.
|
* as well as our own HTTP address from the configuration.
|
||||||
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
private void setNameNodeAddresses(Configuration conf) {
|
private void setNameNodeAddresses(Configuration conf) throws IOException {
|
||||||
// Look up our own address.
|
// Look up our own address.
|
||||||
String myAddrString = getHttpAddress(conf);
|
String myAddrString = getHttpAddress(conf);
|
||||||
|
|
||||||
|
@ -95,7 +97,7 @@ public class StandbyCheckpointer {
|
||||||
myNNAddress = NetUtils.createSocketAddr(myAddrString);
|
myNNAddress = NetUtils.createSocketAddr(myAddrString);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getHttpAddress(Configuration conf) {
|
private String getHttpAddress(Configuration conf) throws IOException {
|
||||||
String configuredAddr = DFSUtil.getInfoServer(null, conf, false);
|
String configuredAddr = DFSUtil.getInfoServer(null, conf, false);
|
||||||
|
|
||||||
// Use the hostname from the RPC address as a default, in case
|
// Use the hostname from the RPC address as a default, in case
|
||||||
|
|
|
@ -409,14 +409,20 @@ public class TestDFSUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetServerInfo() {
|
public void testGetInfoServer() throws IOException {
|
||||||
HdfsConfiguration conf = new HdfsConfiguration();
|
HdfsConfiguration conf = new HdfsConfiguration();
|
||||||
conf.set(HADOOP_SECURITY_AUTHENTICATION, "kerberos");
|
conf.set(HADOOP_SECURITY_AUTHENTICATION, "kerberos");
|
||||||
UserGroupInformation.setConfiguration(conf);
|
UserGroupInformation.setConfiguration(conf);
|
||||||
|
|
||||||
String httpsport = DFSUtil.getInfoServer(null, conf, true);
|
String httpsport = DFSUtil.getInfoServer(null, conf, true);
|
||||||
assertEquals("0.0.0.0:"+DFS_NAMENODE_HTTPS_PORT_DEFAULT, httpsport);
|
assertEquals("0.0.0.0:"+DFS_NAMENODE_HTTPS_PORT_DEFAULT, httpsport);
|
||||||
|
|
||||||
String httpport = DFSUtil.getInfoServer(null, conf, false);
|
String httpport = DFSUtil.getInfoServer(null, conf, false);
|
||||||
assertEquals("0.0.0.0:"+DFS_NAMENODE_HTTP_PORT_DEFAULT, httpport);
|
assertEquals("0.0.0.0:"+DFS_NAMENODE_HTTP_PORT_DEFAULT, httpport);
|
||||||
|
|
||||||
|
String httpAddress = DFSUtil.getInfoServer(new InetSocketAddress(
|
||||||
|
"localhost", 8020), conf, false);
|
||||||
|
assertEquals("localhost:" + DFS_NAMENODE_HTTP_PORT_DEFAULT, httpAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -72,7 +72,7 @@ public class TestHAConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetOtherNNHttpAddress() {
|
public void testGetOtherNNHttpAddress() throws IOException {
|
||||||
// Use non-local addresses to avoid host address matching
|
// Use non-local addresses to avoid host address matching
|
||||||
Configuration conf = getHAConf("ns1", "1.2.3.1", "1.2.3.2");
|
Configuration conf = getHAConf("ns1", "1.2.3.1", "1.2.3.2");
|
||||||
conf.set(DFSConfigKeys.DFS_NAMESERVICE_ID, "ns1");
|
conf.set(DFSConfigKeys.DFS_NAMESERVICE_ID, "ns1");
|
||||||
|
|
Loading…
Reference in New Issue