HADOOP-14062. ApplicationMasterProtocolPBClientImpl.allocate fails with EOFException when RPC privacy is enabled. Contributed by Steven Rand
This commit is contained in:
parent
20fa7664d1
commit
2e8e51ad40
@ -71,7 +71,6 @@
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import static org.apache.hadoop.ipc.RpcConstants.CONNECTION_CONTEXT_CALL_ID;
|
||||
import static org.apache.hadoop.ipc.RpcConstants.PING_CALL_ID;
|
||||
|
||||
/** A client for an IPC service. IPC calls take a single {@link Writable} as a
|
||||
@ -1767,7 +1766,9 @@ public static class IpcStreams implements Closeable, Flushable {
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.fs.CommonConfigurationKeys;
|
||||
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
|
||||
import org.apache.hadoop.io.DataOutputBuffer;
|
||||
import org.apache.hadoop.io.Text;
|
||||
import org.apache.hadoop.security.Credentials;
|
||||
@ -133,6 +133,11 @@ public static void setup() throws Exception {
|
||||
// set the minimum allocation so that resource decrease can go under 1024
|
||||
conf.setInt(YarnConfiguration.RM_SCHEDULER_MINIMUM_ALLOCATION_MB, 512);
|
||||
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.init(conf);
|
||||
yarnCluster.start();
|
||||
@ -656,6 +661,29 @@ private int getAllocatedContainersNumber(
|
||||
|
||||
@Test (timeout=60000)
|
||||
public void testAMRMClient() throws YarnException, IOException {
|
||||
registerAndAllocate();
|
||||
}
|
||||
|
||||
@Test (timeout=60000)
|
||||
public void testAMRMClientWithSaslEncryption() throws Exception {
|
||||
conf.set(CommonConfigurationKeysPublic.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();
|
||||
registerAndAllocate();
|
||||
|
||||
// recreate the original MiniYARNCluster and YarnClient for other tests
|
||||
conf.unset(CommonConfigurationKeysPublic.HADOOP_RPC_PROTECTION);
|
||||
tearDown();
|
||||
createClientAndCluster(conf);
|
||||
// unless we start an application the cancelApp() method will fail when
|
||||
// it runs after this test
|
||||
startApp();
|
||||
}
|
||||
|
||||
private void registerAndAllocate() throws YarnException, IOException {
|
||||
AMRMClient<ContainerRequest> amClient = null;
|
||||
try {
|
||||
// start am rm client
|
||||
|
Loading…
x
Reference in New Issue
Block a user