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