HADOOP-14062. ApplicationMasterProtocolPBClientImpl.allocate fails with EOFException when RPC privacy is enabled. Contributed by Steven Rand
This commit is contained in:
parent
287ba4ffa6
commit
241c1cc05b
@ -1768,7 +1768,9 @@ public static class IpcStreams implements Closeable, Flushable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setSaslClient(SaslRpcClient client) throws IOException {
|
void setSaslClient(SaslRpcClient client) throws IOException {
|
||||||
setInputStream(client.getInputStream(in));
|
// Wrap the input stream in a BufferedInputStream to fill the buffer
|
||||||
|
// before reading its length (HADOOP-14062).
|
||||||
|
setInputStream(new BufferedInputStream(client.getInputStream(in)));
|
||||||
setOutputStream(client.getOutputStream(out));
|
setOutputStream(client.getOutputStream(out));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +137,11 @@ public void setup() throws Exception {
|
|||||||
// set the minimum allocation so that resource decrease can go under 1024
|
// set the minimum allocation so that resource decrease can go under 1024
|
||||||
conf.setInt(YarnConfiguration.RM_SCHEDULER_MINIMUM_ALLOCATION_MB, 512);
|
conf.setInt(YarnConfiguration.RM_SCHEDULER_MINIMUM_ALLOCATION_MB, 512);
|
||||||
conf.setLong(YarnConfiguration.NM_LOG_RETAIN_SECONDS, 1);
|
conf.setLong(YarnConfiguration.NM_LOG_RETAIN_SECONDS, 1);
|
||||||
|
createClientAndCluster(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void createClientAndCluster(Configuration conf)
|
||||||
|
throws Exception {
|
||||||
yarnCluster = new MiniYARNCluster(TestAMRMClient.class.getName(), nodeCount, 1, 1);
|
yarnCluster = new MiniYARNCluster(TestAMRMClient.class.getName(), nodeCount, 1, 1);
|
||||||
yarnCluster.init(conf);
|
yarnCluster.init(conf);
|
||||||
yarnCluster.start();
|
yarnCluster.start();
|
||||||
@ -861,6 +866,25 @@ public void testAMRMClient() throws YarnException, IOException {
|
|||||||
initAMRMClientAndTest(false);
|
initAMRMClientAndTest(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test (timeout=60000)
|
||||||
|
public void testAMRMClientWithSaslEncryption() throws Exception {
|
||||||
|
conf.set("hadoop.rpc.protection", "privacy");
|
||||||
|
// we have to create a new instance of MiniYARNCluster to avoid SASL qop
|
||||||
|
// mismatches between client and server
|
||||||
|
tearDown();
|
||||||
|
createClientAndCluster(conf);
|
||||||
|
startApp();
|
||||||
|
initAMRMClientAndTest(false);
|
||||||
|
|
||||||
|
// recreate the original MiniYARNCluster and YarnClient for other tests
|
||||||
|
conf.unset("hadoop.rpc.protection");
|
||||||
|
tearDown();
|
||||||
|
createClientAndCluster(conf);
|
||||||
|
// unless we start an application the cancelApp() method will fail when
|
||||||
|
// it runs after this test
|
||||||
|
startApp();
|
||||||
|
}
|
||||||
|
|
||||||
@Test (timeout=60000)
|
@Test (timeout=60000)
|
||||||
public void testAMRMClientAllocReqId() throws YarnException, IOException {
|
public void testAMRMClientAllocReqId() throws YarnException, IOException {
|
||||||
initAMRMClientAndTest(true);
|
initAMRMClientAndTest(true);
|
||||||
|
Loading…
Reference in New Issue
Block a user