HADOOP-14062. ApplicationMasterProtocolPBClientImpl.allocate fails with EOFException when RPC privacy is enabled. Contributed by Steven Rand
This commit is contained in:
parent
1a0358b59a
commit
8c44a9db21
|
@ -1770,7 +1770,9 @@ public class Client implements AutoCloseable {
|
||||||
}
|
}
|
||||||
|
|
||||||
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@ import java.util.Set;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
|
||||||
import org.apache.hadoop.io.DataOutputBuffer;
|
import org.apache.hadoop.io.DataOutputBuffer;
|
||||||
import org.apache.hadoop.io.Text;
|
import org.apache.hadoop.io.Text;
|
||||||
import org.apache.hadoop.security.Credentials;
|
import org.apache.hadoop.security.Credentials;
|
||||||
|
@ -148,8 +149,12 @@ public class TestAMRMClient {
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception {
|
public void setup() throws Exception {
|
||||||
// start minicluster
|
|
||||||
conf = new YarnConfiguration();
|
conf = new YarnConfiguration();
|
||||||
|
createClusterAndStartApplication();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createClusterAndStartApplication() throws Exception {
|
||||||
|
// start minicluster
|
||||||
conf.set(YarnConfiguration.RM_SCHEDULER, schedulerName);
|
conf.set(YarnConfiguration.RM_SCHEDULER, schedulerName);
|
||||||
conf.setLong(
|
conf.setLong(
|
||||||
YarnConfiguration.RM_AMRM_TOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS,
|
YarnConfiguration.RM_AMRM_TOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS,
|
||||||
|
@ -872,6 +877,17 @@ public class TestAMRMClient {
|
||||||
initAMRMClientAndTest(true);
|
initAMRMClientAndTest(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test (timeout=60000)
|
||||||
|
public void testAMRMClientWithSaslEncryption() throws Exception {
|
||||||
|
// we have to create a new instance of MiniYARNCluster to avoid SASL qop
|
||||||
|
// mismatches between client and server
|
||||||
|
teardown();
|
||||||
|
conf = new YarnConfiguration();
|
||||||
|
conf.set(CommonConfigurationKeysPublic.HADOOP_RPC_PROTECTION, "privacy");
|
||||||
|
createClusterAndStartApplication();
|
||||||
|
initAMRMClientAndTest(false);
|
||||||
|
}
|
||||||
|
|
||||||
private void initAMRMClientAndTest(boolean useAllocReqId)
|
private void initAMRMClientAndTest(boolean useAllocReqId)
|
||||||
throws YarnException, IOException {
|
throws YarnException, IOException {
|
||||||
AMRMClient<ContainerRequest> amClient = null;
|
AMRMClient<ContainerRequest> amClient = null;
|
||||||
|
|
Loading…
Reference in New Issue