HDFS-4210. Throw helpful exception when DNS entry for JournalNode cannot be resolved. Contributed by Charles Lamb and John Zhuge.
(cherry picked from commit 046f6bf0f944311fc70de3a96fc6ab8211cbbbd8)
This commit is contained in:
parent
3b19bcb8f0
commit
72863f0049
|
@ -21,6 +21,7 @@ import java.io.IOException;
|
|||
import java.net.InetSocketAddress;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
@ -387,8 +388,12 @@ public class QuorumJournalManager implements JournalManager {
|
|||
|
||||
List<InetSocketAddress> addrs = Lists.newArrayList();
|
||||
for (String addr : parts) {
|
||||
addrs.add(NetUtils.createSocketAddr(
|
||||
addr, DFSConfigKeys.DFS_JOURNALNODE_RPC_PORT_DEFAULT));
|
||||
InetSocketAddress isa = NetUtils.createSocketAddr(
|
||||
addr, DFSConfigKeys.DFS_JOURNALNODE_RPC_PORT_DEFAULT);
|
||||
if (isa.isUnresolved()) {
|
||||
throw new UnknownHostException(addr);
|
||||
}
|
||||
addrs.add(isa);
|
||||
}
|
||||
return addrs;
|
||||
}
|
||||
|
|
|
@ -27,7 +27,9 @@ import java.io.Closeable;
|
|||
import java.io.IOException;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
@ -52,7 +54,9 @@ import org.apache.hadoop.io.IOUtils;
|
|||
import org.apache.hadoop.ipc.ProtobufRpcEngine;
|
||||
import org.apache.hadoop.test.GenericTestUtils;
|
||||
import org.apache.log4j.Level;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
import org.mockito.stubbing.Answer;
|
||||
|
@ -126,6 +130,9 @@ public class TestQJMWithFaults {
|
|||
return ret;
|
||||
}
|
||||
|
||||
@Rule
|
||||
public ExpectedException expectedException = ExpectedException.none();
|
||||
|
||||
/**
|
||||
* Sets up two of the nodes to each drop a single RPC, at all
|
||||
* possible combinations of RPCs. This may result in the
|
||||
|
@ -186,6 +193,16 @@ public class TestQJMWithFaults {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Expect {@link UnknownHostException} if a hostname can't be resolved.
|
||||
*/
|
||||
@Test
|
||||
public void testUnresolvableHostName() throws Exception {
|
||||
expectedException.expect(UnknownHostException.class);
|
||||
new QuorumJournalManager(conf,
|
||||
new URI("qjournal://" + "bogus:12345" + "/" + JID), FAKE_NSINFO);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test case in which three JournalNodes randomly flip flop between
|
||||
* up and down states every time they get an RPC.
|
||||
|
|
Loading…
Reference in New Issue