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/trunk@1344908 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c0dcdd67d1
commit
675a7e4acb
@ -270,6 +270,9 @@ Release 2.0.1-alpha - UNRELEASED
|
|||||||
HDFS-3460. HttpFS proxyuser validation with Kerberos ON uses full
|
HDFS-3460. HttpFS proxyuser validation with Kerberos ON uses full
|
||||||
principal name. (tucu)
|
principal name. (tucu)
|
||||||
|
|
||||||
|
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
|
||||||
|
@ -706,9 +706,10 @@ public static String getNameServiceIdFromAddress(final Configuration conf,
|
|||||||
* @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;
|
||||||
@ -725,8 +726,14 @@ public static String getInfoServer(
|
|||||||
} 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -679,8 +679,12 @@ void stopActiveServices() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 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 StandbyCheckpointer(Configuration conf, FSNamesystem ns) {
|
|||||||
/**
|
/**
|
||||||
* 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 @@ private void setNameNodeAddresses(Configuration conf) {
|
|||||||
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 void testEmptyConf() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@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 @@ private Configuration getHAConf(String nsId, String host1, String host2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@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
Block a user