diff --git hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/v2/security/MRDelegationTokenRenewer.java hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/v2/security/MRDelegationTokenRenewer.java index 2415e45..0d58593 100644 --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/v2/security/MRDelegationTokenRenewer.java +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/v2/security/MRDelegationTokenRenewer.java @@ -37,6 +37,7 @@ import org.apache.hadoop.security.token.Token; import org.apache.hadoop.security.token.TokenRenewer; import org.apache.hadoop.yarn.api.records.DelegationToken; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.util.BuilderUtils; import org.apache.hadoop.yarn.util.Records; @@ -67,6 +68,8 @@ public long renew(Token token, Configuration conf) throws IOException, .newRecord(RenewDelegationTokenRequest.class); request.setDelegationToken(dToken); return histProxy.renewDelegationToken(request).getNextExpirationTime(); + } catch (YarnRemoteException e) { + throw new IOException(e); } finally { stopHistoryProxy(histProxy); } @@ -88,6 +91,8 @@ public void cancel(Token token, Configuration conf) throws IOException, .newRecord(CancelDelegationTokenRequest.class); request.setDelegationToken(dToken); histProxy.cancelDelegationToken(request); + } catch (YarnRemoteException e) { + throw new IOException(e); } finally { stopHistoryProxy(histProxy); } diff --git hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ClientServiceDelegate.java hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ClientServiceDelegate.java index 1376298..303f345 100644 --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ClientServiceDelegate.java +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ClientServiceDelegate.java @@ -302,13 +302,13 @@ private synchronized Object invoke(String method, Class argClass, return methodOb.invoke(getProxy(), args); } catch (YarnRemoteException yre) { LOG.warn("Exception thrown by remote end.", yre); - throw yre; + throw new IOException(yre); } catch (InvocationTargetException e) { if (e.getTargetException() instanceof YarnRemoteException) { LOG.warn("Error from remote end: " + e .getTargetException().getLocalizedMessage()); LOG.debug("Tracing remote error ", e.getTargetException()); - throw (YarnRemoteException) e.getTargetException(); + throw new IOException(e.getTargetException()); } LOG.debug("Failed to contact AM/History for job " + jobId + " retrying..", e.getTargetException()); diff --git hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java index 5903a4a..b893c92 100644 --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java @@ -43,6 +43,7 @@ import org.apache.hadoop.yarn.api.records.YarnClusterMetrics; import org.apache.hadoop.yarn.client.YarnClientImpl; import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.util.ProtoUtils; public class ResourceMgrDelegate extends YarnClientImpl { @@ -65,11 +66,19 @@ public ResourceMgrDelegate(YarnConfiguration conf) { public TaskTrackerInfo[] getActiveTrackers() throws IOException, InterruptedException { - return TypeConverter.fromYarnNodes(super.getNodeReports()); + try { + return TypeConverter.fromYarnNodes(super.getNodeReports()); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } public JobStatus[] getAllJobs() throws IOException, InterruptedException { - return TypeConverter.fromYarnApps(super.getApplicationList(), this.conf); + try { + return TypeConverter.fromYarnApps(super.getApplicationList(), this.conf); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } public TaskTrackerInfo[] getBlacklistedTrackers() throws IOException, @@ -81,11 +90,17 @@ public ResourceMgrDelegate(YarnConfiguration conf) { public ClusterMetrics getClusterMetrics() throws IOException, InterruptedException { - YarnClusterMetrics metrics = super.getYarnClusterMetrics(); - ClusterMetrics oldMetrics = new ClusterMetrics(1, 1, 1, 1, 1, 1, - metrics.getNumNodeManagers() * 10, metrics.getNumNodeManagers() * 2, 1, - metrics.getNumNodeManagers(), 0, 0); - return oldMetrics; + try { + YarnClusterMetrics metrics = super.getYarnClusterMetrics(); + ClusterMetrics oldMetrics = + new ClusterMetrics(1, 1, 1, 1, 1, 1, + metrics.getNumNodeManagers() * 10, + metrics.getNumNodeManagers() * 2, 1, + metrics.getNumNodeManagers(), 0, 0); + return oldMetrics; + } catch (YarnRemoteException e) { + throw new IOException(e); + } } InetSocketAddress getConnectAddress() { @@ -95,8 +110,12 @@ InetSocketAddress getConnectAddress() { @SuppressWarnings("rawtypes") public Token getDelegationToken(Text renewer) throws IOException, InterruptedException { - return ProtoUtils.convertFromProtoFormat( - super.getRMDelegationToken(renewer), rmAddress); + try { + return ProtoUtils.convertFromProtoFormat( + super.getRMDelegationToken(renewer), rmAddress); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } public String getFilesystemName() throws IOException, InterruptedException { @@ -104,36 +123,62 @@ public String getFilesystemName() throws IOException, InterruptedException { } public JobID getNewJobID() throws IOException, InterruptedException { - this.application = super.getNewApplication(); - this.applicationId = this.application.getApplicationId(); - return TypeConverter.fromYarn(applicationId); + try { + this.application = super.getNewApplication(); + this.applicationId = this.application.getApplicationId(); + return TypeConverter.fromYarn(applicationId); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } public QueueInfo getQueue(String queueName) throws IOException, InterruptedException { - org.apache.hadoop.yarn.api.records.QueueInfo queueInfo = - super.getQueueInfo(queueName); - return (queueInfo == null) ? null : TypeConverter.fromYarn(queueInfo, conf); + try { + org.apache.hadoop.yarn.api.records.QueueInfo queueInfo = + super.getQueueInfo(queueName); + return (queueInfo == null) ? null : TypeConverter.fromYarn(queueInfo, + conf); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } public QueueAclsInfo[] getQueueAclsForCurrentUser() throws IOException, InterruptedException { - return TypeConverter.fromYarnQueueUserAclsInfo(super - .getQueueAclsInfo()); + try { + return TypeConverter.fromYarnQueueUserAclsInfo(super + .getQueueAclsInfo()); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } public QueueInfo[] getQueues() throws IOException, InterruptedException { - return TypeConverter.fromYarnQueueInfo(super.getAllQueues(), this.conf); + try { + return TypeConverter.fromYarnQueueInfo(super.getAllQueues(), this.conf); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } public QueueInfo[] getRootQueues() throws IOException, InterruptedException { - return TypeConverter.fromYarnQueueInfo(super.getRootQueueInfos(), this.conf); + try { + return TypeConverter.fromYarnQueueInfo(super.getRootQueueInfos(), + this.conf); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } public QueueInfo[] getChildQueues(String parent) throws IOException, InterruptedException { - return TypeConverter.fromYarnQueueInfo(super.getChildQueueInfos(parent), - this.conf); + try { + return TypeConverter.fromYarnQueueInfo(super.getChildQueueInfos(parent), + this.conf); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } public String getStagingAreaDir() throws IOException, InterruptedException { diff --git hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/YARNRunner.java hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/YARNRunner.java index 241258a..55d5c13 100644 --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/YARNRunner.java +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/YARNRunner.java @@ -80,6 +80,7 @@ import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.api.records.YarnApplicationState; import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.security.client.RMTokenSelector; @@ -207,10 +208,15 @@ void addHistoyToken(Credentials ts) throws IOException, InterruptedException { GetDelegationTokenRequest request = recordFactory .newRecordInstance(GetDelegationTokenRequest.class); request.setRenewer(Master.getMasterPrincipal(conf)); - DelegationToken mrDelegationToken = hsProxy.getDelegationToken(request) - .getDelegationToken(); - return ProtoUtils.convertFromProtoFormat(mrDelegationToken, - hsProxy.getConnectAddress()); + DelegationToken mrDelegationToken; + try { + mrDelegationToken = hsProxy.getDelegationToken(request) + .getDelegationToken(); + return ProtoUtils.convertFromProtoFormat(mrDelegationToken, + hsProxy.getConnectAddress()); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } @Override @@ -295,19 +301,25 @@ public JobStatus submitJob(JobID jobId, String jobSubmitDir, Credentials ts) createApplicationSubmissionContext(conf, jobSubmitDir, ts); // Submit to ResourceManager - ApplicationId applicationId = resMgrDelegate.submitApplication(appContext); - - ApplicationReport appMaster = resMgrDelegate - .getApplicationReport(applicationId); - String diagnostics = - (appMaster == null ? - "application report is null" : appMaster.getDiagnostics()); - if (appMaster == null || appMaster.getYarnApplicationState() == YarnApplicationState.FAILED - || appMaster.getYarnApplicationState() == YarnApplicationState.KILLED) { - throw new IOException("Failed to run job : " + - diagnostics); + try { + ApplicationId applicationId = + resMgrDelegate.submitApplication(appContext); + + ApplicationReport appMaster = resMgrDelegate + .getApplicationReport(applicationId); + String diagnostics = + (appMaster == null ? + "application report is null" : appMaster.getDiagnostics()); + if (appMaster == null + || appMaster.getYarnApplicationState() == YarnApplicationState.FAILED + || appMaster.getYarnApplicationState() == YarnApplicationState.KILLED) { + throw new IOException("Failed to run job : " + + diagnostics); + } + return clientCache.getClient(jobId).getJobStatus(jobId); + } catch (YarnRemoteException e) { + throw new IOException(e); } - return clientCache.getClient(jobId).getJobStatus(jobId); } private LocalResource createApplicationResource(FileContext fs, Path p, LocalResourceType type) @@ -552,7 +564,11 @@ public void killJob(JobID arg0) throws IOException, InterruptedException { /* check if the status is not running, if not send kill to RM */ JobStatus status = clientCache.getClient(arg0).getJobStatus(arg0); if (status.getState() != JobStatus.State.RUNNING) { - resMgrDelegate.killApplication(TypeConverter.toYarn(arg0).getAppId()); + try { + resMgrDelegate.killApplication(TypeConverter.toYarn(arg0).getAppId()); + } catch (YarnRemoteException e) { + throw new IOException(e); + } return; } @@ -576,7 +592,11 @@ public void killJob(JobID arg0) throws IOException, InterruptedException { LOG.debug("Error when checking for application status", io); } if (status.getState() != JobStatus.State.KILLED) { - resMgrDelegate.killApplication(TypeConverter.toYarn(arg0).getAppId()); + try { + resMgrDelegate.killApplication(TypeConverter.toYarn(arg0).getAppId()); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } } @@ -607,7 +627,11 @@ public ProtocolSignature getProtocolSignature(String protocol, @Override public LogParams getLogFileParams(JobID jobID, TaskAttemptID taskAttemptID) throws IOException { - return clientCache.getClient(jobID).getLogFilePath(jobID, taskAttemptID); + try { + return clientCache.getClient(jobID).getLogFilePath(jobID, taskAttemptID); + } catch (YarnRemoteException e) { + throw new IOException(e); + } } private static void warnForJavaLibPath(String opts, String component, diff --git hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestClientServiceDelegate.java hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestClientServiceDelegate.java index 4eaddfc..208a6a0 100644 --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestClientServiceDelegate.java +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestClientServiceDelegate.java @@ -115,8 +115,8 @@ public void testRemoteExceptionFromHistoryServer() throws Exception { try { clientServiceDelegate.getJobStatus(oldJobId); Assert.fail("Invoke should throw exception after retries."); - } catch (YarnRemoteException e) { - Assert.assertEquals("Job ID doesnot Exist", e.getMessage()); + } catch (IOException e) { + Assert.assertEquals("Job ID doesnot Exist", e.getCause().getMessage()); } } @@ -198,7 +198,8 @@ public void testCountersFromHistoryServer() throws Exception { } @Test - public void testReconnectOnAMRestart() throws IOException { + public void testReconnectOnAMRestart() throws IOException, + YarnRemoteException { //test not applicable when AM not reachable //as instantiateAMProxy is not called at all if(!isAMReachableFromClient) { @@ -265,7 +266,7 @@ public void testReconnectOnAMRestart() throws IOException { } @Test - public void testAMAccessDisabled() throws IOException { + public void testAMAccessDisabled() throws IOException, YarnRemoteException { //test only applicable when AM not reachable if(isAMReachableFromClient) { return; @@ -317,7 +318,8 @@ public void testAMAccessDisabled() throws IOException { } @Test - public void testRMDownForJobStatusBeforeGetAMReport() throws IOException { + public void testRMDownForJobStatusBeforeGetAMReport() throws IOException, + YarnRemoteException { Configuration conf = new YarnConfiguration(); testRMDownForJobStatusBeforeGetAMReport(conf, MRJobConfig.DEFAULT_MR_CLIENT_MAX_RETRIES); @@ -325,7 +327,7 @@ public void testRMDownForJobStatusBeforeGetAMReport() throws IOException { @Test public void testRMDownForJobStatusBeforeGetAMReportWithRetryTimes() - throws IOException { + throws IOException, YarnRemoteException { Configuration conf = new YarnConfiguration(); conf.setInt(MRJobConfig.MR_CLIENT_MAX_RETRIES, 2); testRMDownForJobStatusBeforeGetAMReport(conf, conf.getInt( @@ -335,7 +337,7 @@ public void testRMDownForJobStatusBeforeGetAMReportWithRetryTimes() @Test public void testRMDownRestoreForJobStatusBeforeGetAMReport() - throws IOException { + throws IOException, YarnRemoteException { Configuration conf = new YarnConfiguration(); conf.setInt(MRJobConfig.MR_CLIENT_MAX_RETRIES, 3); diff --git hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestResourceMgrDelegate.java hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestResourceMgrDelegate.java index cd325a1..7efd4b1 100644 --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestResourceMgrDelegate.java +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestResourceMgrDelegate.java @@ -38,6 +38,7 @@ import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.YarnApplicationState; import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.util.Records; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -47,9 +48,12 @@ /** * Tests that getRootQueues makes a request for the (recursive) child queues + * @throws YarnRemoteException + * @throws IOException */ @Test - public void testGetRootQueues() throws IOException, InterruptedException { + public void testGetRootQueues() throws IOException, InterruptedException, + YarnRemoteException { final ClientRMProtocol applicationsManager = Mockito.mock(ClientRMProtocol.class); GetQueueInfoResponse response = Mockito.mock(GetQueueInfoResponse.class); org.apache.hadoop.yarn.api.records.QueueInfo queueInfo = diff --git hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/TestMRJobClient.java hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/TestMRJobClient.java index 5a31fe3..1c7b679 100644 --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/TestMRJobClient.java +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/TestMRJobClient.java @@ -40,7 +40,6 @@ import org.apache.hadoop.util.ExitUtil; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; -import org.apache.hadoop.yarn.exceptions.YarnRemoteException; /** test CLI class. CLI class implemented the Tool interface. @@ -155,7 +154,7 @@ private void testfailTask(Job job, Configuration conf) throws Exception { try { runTool(conf, jc, new String[] { "-fail-task", taid.toString() }, out); fail(" this task should field"); - } catch (YarnRemoteException e) { + } catch (IOException e) { // task completed ! assertTrue(e.getMessage().contains("_0001_m_000000_1")); } @@ -175,7 +174,7 @@ private void testKillTask(Job job, Configuration conf) throws Exception { try { runTool(conf, jc, new String[] { "-kill-task", taid.toString() }, out); fail(" this task should be killed"); - } catch (YarnRemoteException e) { + } catch (IOException e) { // task completed assertTrue(e.getMessage().contains("_0001_m_000000_1")); } diff --git hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/security/TestJHSSecurity.java hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/security/TestJHSSecurity.java index 53ef152..9d61d00 100644 --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/security/TestJHSSecurity.java +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/security/TestJHSSecurity.java @@ -62,7 +62,8 @@ private static final Log LOG = LogFactory.getLog(TestJHSSecurity.class); @Test - public void testDelegationToken() throws IOException, InterruptedException { + public void testDelegationToken() throws IOException, InterruptedException, + YarnRemoteException { Logger rootLogger = LogManager.getRootLogger(); rootLogger.setLevel(Level.DEBUG); diff --git hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/v2/TestMRJobsWithHistoryService.java hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/v2/TestMRJobsWithHistoryService.java index fc842b0..0a89c5e 100644 --- hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/v2/TestMRJobsWithHistoryService.java +++ hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/v2/TestMRJobsWithHistoryService.java @@ -46,6 +46,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ContainerId; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState; import org.apache.hadoop.yarn.util.BuilderUtils; @@ -114,7 +115,7 @@ public void tearDown() { @Test (timeout = 30000) public void testJobHistoryData() throws IOException, InterruptedException, - AvroRemoteException, ClassNotFoundException { + AvroRemoteException, ClassNotFoundException, YarnRemoteException { if (!(new File(MiniMRYarnCluster.APPJAR)).exists()) { LOG.info("MRAppJar " + MiniMRYarnCluster.APPJAR + " not found. Not running test."); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/YarnRemoteException.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/YarnRemoteException.java index 35d80a0..7b4c025 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/YarnRemoteException.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/YarnRemoteException.java @@ -18,11 +18,10 @@ package org.apache.hadoop.yarn.exceptions; -import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; -public abstract class YarnRemoteException extends IOException { +public abstract class YarnRemoteException extends Exception { private static final long serialVersionUID = 1L; public YarnRemoteException() { diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/impl/pb/YarnRemoteExceptionPBImpl.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/impl/pb/YarnRemoteExceptionPBImpl.java index ae17ed0..67719a2 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/impl/pb/YarnRemoteExceptionPBImpl.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/exceptions/impl/pb/YarnRemoteExceptionPBImpl.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; +import java.lang.reflect.Constructor; import java.lang.reflect.UndeclaredThrowableException; import org.apache.hadoop.ipc.RemoteException; @@ -120,12 +121,24 @@ public static YarnRemoteException unwrapAndThrowException(ServiceException se) throws UndeclaredThrowableException { if (se.getCause() instanceof RemoteException) { try { - throw ((RemoteException) se.getCause()) - .unwrapRemoteException(YarnRemoteExceptionPBImpl.class); - } catch (YarnRemoteException ex) { + RemoteException re = (RemoteException) se.getCause(); + Class realClass = Class.forName(re.getClassName()); + if (YarnRemoteException.class.isAssignableFrom(realClass)) { + Constructor cn = + realClass.asSubclass(YarnRemoteException.class).getConstructor( + String.class); + cn.setAccessible(true); + YarnRemoteException ex = cn.newInstance(re.getMessage()); + ex.initCause(re); return ex; + } else { + throw ((RemoteException) se.getCause()) + .unwrapRemoteException(YarnRemoteExceptionPBImpl.class); + } } catch (IOException e1) { throw new UndeclaredThrowableException(e1); + } catch (Exception ex) { + throw new UndeclaredThrowableException((RemoteException)se.getCause()); } } else if (se.getCause() instanceof YarnRemoteException) { return (YarnRemoteException)se.getCause(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java index 0461d46..927dfe3 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/main/java/org/apache/hadoop/yarn/applications/distributedshell/Client.java @@ -312,8 +312,9 @@ public boolean init(String[] args) throws ParseException { * Main run function for the client * @return true if application completed successfully * @throws IOException + * @throws YarnRemoteException */ - public boolean run() throws IOException { + public boolean run() throws IOException, YarnRemoteException { LOG.info("Running Client"); start(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/src/main/java/org/apache/hadoop/yarn/applications/unmanagedamlauncher/UnmanagedAMLauncher.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/src/main/java/org/apache/hadoop/yarn/applications/unmanagedamlauncher/UnmanagedAMLauncher.java index 85388e0..f05eca6 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/src/main/java/org/apache/hadoop/yarn/applications/unmanagedamlauncher/UnmanagedAMLauncher.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-unmanaged-am-launcher/src/main/java/org/apache/hadoop/yarn/applications/unmanagedamlauncher/UnmanagedAMLauncher.java @@ -271,7 +271,7 @@ public void run() { amProc.destroy(); } - public boolean run() throws IOException { + public boolean run() throws IOException, YarnRemoteException { LOG.info("Starting Client"); // Connect to ResourceManager diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/RMAdmin.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/RMAdmin.java index fd30fb4..b9be159 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/RMAdmin.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/RMAdmin.java @@ -37,6 +37,7 @@ import org.apache.hadoop.yarn.api.protocolrecords.RefreshSuperUserGroupsConfigurationRequest; import org.apache.hadoop.yarn.api.protocolrecords.RefreshUserToGroupsMappingsRequest; import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.ipc.YarnRPC; @@ -187,7 +188,7 @@ public RMAdminProtocol run() { return adminProtocol; } - private int refreshQueues() throws IOException { + private int refreshQueues() throws IOException, YarnRemoteException { // Refresh the queue properties RMAdminProtocol adminProtocol = createAdminProtocol(); RefreshQueuesRequest request = @@ -196,7 +197,7 @@ private int refreshQueues() throws IOException { return 0; } - private int refreshNodes() throws IOException { + private int refreshNodes() throws IOException, YarnRemoteException { // Refresh the nodes RMAdminProtocol adminProtocol = createAdminProtocol(); RefreshNodesRequest request = @@ -205,7 +206,8 @@ private int refreshNodes() throws IOException { return 0; } - private int refreshUserToGroupsMappings() throws IOException { + private int refreshUserToGroupsMappings() throws IOException, + YarnRemoteException { // Refresh the user-to-groups mappings RMAdminProtocol adminProtocol = createAdminProtocol(); RefreshUserToGroupsMappingsRequest request = @@ -214,7 +216,8 @@ private int refreshUserToGroupsMappings() throws IOException { return 0; } - private int refreshSuperUserGroupsConfiguration() throws IOException { + private int refreshSuperUserGroupsConfiguration() throws IOException, + YarnRemoteException { // Refresh the super-user groups RMAdminProtocol adminProtocol = createAdminProtocol(); RefreshSuperUserGroupsConfigurationRequest request = @@ -223,7 +226,7 @@ private int refreshSuperUserGroupsConfiguration() throws IOException { return 0; } - private int refreshAdminAcls() throws IOException { + private int refreshAdminAcls() throws IOException, YarnRemoteException { // Refresh the admin acls RMAdminProtocol adminProtocol = createAdminProtocol(); RefreshAdminAclsRequest request = @@ -232,7 +235,7 @@ private int refreshAdminAcls() throws IOException { return 0; } - private int refreshServiceAcls() throws IOException { + private int refreshServiceAcls() throws IOException, YarnRemoteException { // Refresh the service acls RMAdminProtocol adminProtocol = createAdminProtocol(); RefreshServiceAclsRequest request = diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/RMDelegationTokenIdentifier.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/RMDelegationTokenIdentifier.java index 73bdce4..7926795 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/RMDelegationTokenIdentifier.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/RMDelegationTokenIdentifier.java @@ -38,6 +38,7 @@ import org.apache.hadoop.yarn.api.protocolrecords.CancelDelegationTokenRequest; import org.apache.hadoop.yarn.api.protocolrecords.RenewDelegationTokenRequest; import org.apache.hadoop.yarn.api.records.DelegationToken; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.ipc.YarnRPC; import org.apache.hadoop.yarn.util.BuilderUtils; import org.apache.hadoop.yarn.util.Records; @@ -105,6 +106,8 @@ public long renew(Token token, Configuration conf) throws IOException, Records.newRecord(RenewDelegationTokenRequest.class); request.setDelegationToken(convertToProtoToken(token)); return rmClient.renewDelegationToken(request).getNextExpirationTime(); + } catch (YarnRemoteException e) { + throw new IOException(e); } finally { RPC.stopProxy(rmClient); } @@ -125,6 +128,8 @@ public void cancel(Token token, Configuration conf) throws IOException, Records.newRecord(CancelDelegationTokenRequest.class); request.setDelegationToken(convertToProtoToken(token)); rmClient.cancelDelegationToken(request); + } catch (YarnRemoteException e) { + throw new IOException(e); } finally { RPC.stopProxy(rmClient); } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestContainerManagerWithLCE.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestContainerManagerWithLCE.java index a23f125..396706d 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestContainerManagerWithLCE.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestContainerManagerWithLCE.java @@ -27,6 +27,7 @@ import org.apache.hadoop.fs.UnsupportedFileSystemException; import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.server.nodemanager.containermanager.TestContainerManager; import org.junit.After; @@ -73,7 +74,8 @@ public void tearDown() throws IOException, InterruptedException { } @Override - public void testContainerSetup() throws IOException, InterruptedException { + public void testContainerSetup() throws IOException, InterruptedException, + YarnRemoteException { // Don't run the test if the binary is not available. if (!shouldRunTest()) { LOG.info("LCE binary path is not passed. Not running the test"); @@ -96,7 +98,7 @@ public void testContainerManagerInitialization() throws IOException { @Override public void testContainerLaunchAndStop() throws IOException, - InterruptedException { + InterruptedException, YarnRemoteException { // Don't run the test if the binary is not available. if (!shouldRunTest()) { LOG.info("LCE binary path is not passed. Not running the test"); @@ -108,7 +110,7 @@ public void testContainerLaunchAndStop() throws IOException, @Override public void testContainerLaunchAndExitSuccess() throws IOException, - InterruptedException { + InterruptedException, YarnRemoteException { // Don't run the test if the binary is not available. if (!shouldRunTest()) { LOG.info("LCE binary path is not passed. Not running the test"); @@ -120,7 +122,7 @@ public void testContainerLaunchAndExitSuccess() throws IOException, @Override public void testContainerLaunchAndExitFailure() throws IOException, - InterruptedException { + InterruptedException, YarnRemoteException { // Don't run the test if the binary is not available. if (!shouldRunTest()) { LOG.info("LCE binary path is not passed. Not running the test"); @@ -132,7 +134,7 @@ public void testContainerLaunchAndExitFailure() throws IOException, @Override public void testLocalFilesCleanup() throws InterruptedException, - IOException { + IOException, YarnRemoteException { // Don't run the test if the binary is not available. if (!shouldRunTest()) { LOG.info("LCE binary path is not passed. Not running the test"); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestEventFlow.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestEventFlow.java index 292d00f..dc45781 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestEventFlow.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestEventFlow.java @@ -35,6 +35,7 @@ import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.AsyncDispatcher; import org.apache.hadoop.yarn.event.Dispatcher; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.server.api.ResourceTracker; @@ -61,7 +62,7 @@ @Test public void testSuccessfulContainerLaunch() throws InterruptedException, - IOException { + IOException, YarnRemoteException { FileContext localFS = FileContext.getLocalFSFileContext(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerReboot.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerReboot.java index 1436193..1e4c155 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerReboot.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerReboot.java @@ -45,6 +45,7 @@ import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.Dispatcher; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl; import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container; import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerState; @@ -87,7 +88,8 @@ public void tearDown() throws IOException, InterruptedException { } @Test(timeout = 20000) - public void testClearLocalDirWhenNodeReboot() throws IOException { + public void testClearLocalDirWhenNodeReboot() throws IOException, + YarnRemoteException { nm = new MyNodeManager(); nm.start(); // create files under fileCache diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerResync.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerResync.java index 76ac442..6f1fafa 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerResync.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerResync.java @@ -84,7 +84,7 @@ public void tearDown() throws IOException, InterruptedException { @SuppressWarnings("unchecked") @Test public void testKillContainersOnResync() throws IOException, - InterruptedException { + InterruptedException, YarnRemoteException { NodeManager nm = new TestNodeManager1(); YarnConfiguration conf = createNMConfig(); nm.init(conf); @@ -112,7 +112,7 @@ public void testKillContainersOnResync() throws IOException, @SuppressWarnings("unchecked") @Test public void testBlockNewContainerRequestsOnStartAndResync() - throws IOException, InterruptedException { + throws IOException, InterruptedException, YarnRemoteException { NodeManager nm = new TestNodeManager2(); YarnConfiguration conf = createNMConfig(); nm.init(conf); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerShutdown.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerShutdown.java index ab634c4..1013a89 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerShutdown.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManagerShutdown.java @@ -54,6 +54,7 @@ import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.Dispatcher; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl; @@ -97,7 +98,8 @@ public void tearDown() throws IOException, InterruptedException { } @Test - public void testKillContainersOnShutdown() throws IOException { + public void testKillContainersOnShutdown() throws IOException, + YarnRemoteException { NodeManager nm = getNodeManager(); nm.init(createNMConfig()); nm.start(); @@ -144,7 +146,7 @@ public void testKillContainersOnShutdown() throws IOException { public static void startContainer(NodeManager nm, ContainerId cId, FileContext localFS, File scriptFileDir, File processStartFile) - throws IOException { + throws IOException, YarnRemoteException { ContainerManagerImpl containerManager = nm.getContainerManager(); File scriptFile = createUnhaltingScriptFile(cId, scriptFileDir, processStartFile); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestContainerManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestContainerManager.java index df3d917..6c10049 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestContainerManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestContainerManager.java @@ -116,7 +116,8 @@ public void testContainerManagerInitialization() throws IOException { } @Test - public void testContainerSetup() throws IOException, InterruptedException { + public void testContainerSetup() throws IOException, InterruptedException, + YarnRemoteException { containerManager.start(); @@ -206,7 +207,7 @@ public void testContainerSetup() throws IOException, InterruptedException { @Test public void testContainerLaunchAndStop() throws IOException, - InterruptedException { + InterruptedException, YarnRemoteException { containerManager.start(); File scriptFile = Shell.appendScriptExtension(tmpDir, "scriptFile"); @@ -312,7 +313,8 @@ public void testContainerLaunchAndStop() throws IOException, DefaultContainerExecutor.containerIsAlive(pid)); } - private void testContainerLaunchAndExit(int exitCode) throws IOException, InterruptedException { + private void testContainerLaunchAndExit(int exitCode) throws IOException, + InterruptedException, YarnRemoteException { File scriptFile = Shell.appendScriptExtension(tmpDir, "scriptFile"); PrintWriter fileWriter = new PrintWriter(scriptFile); @@ -390,7 +392,8 @@ private void testContainerLaunchAndExit(int exitCode) throws IOException, Interr } @Test - public void testContainerLaunchAndExitSuccess() throws IOException, InterruptedException { + public void testContainerLaunchAndExitSuccess() throws IOException, + InterruptedException, YarnRemoteException { containerManager.start(); int exitCode = 0; @@ -400,7 +403,8 @@ public void testContainerLaunchAndExitSuccess() throws IOException, InterruptedE } @Test - public void testContainerLaunchAndExitFailure() throws IOException, InterruptedException { + public void testContainerLaunchAndExitFailure() throws IOException, + InterruptedException, YarnRemoteException { containerManager.start(); int exitCode = 50; @@ -411,7 +415,7 @@ public void testContainerLaunchAndExitFailure() throws IOException, InterruptedE @Test public void testLocalFilesCleanup() throws InterruptedException, - IOException { + IOException, YarnRemoteException { // Real del service delSrvc = new DeletionService(exec); delSrvc.init(conf); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/logaggregation/TestLogAggregationService.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/logaggregation/TestLogAggregationService.java index ccbf9f7..ec6ef41 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/logaggregation/TestLogAggregationService.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/logaggregation/TestLogAggregationService.java @@ -68,6 +68,7 @@ import org.apache.hadoop.yarn.event.DrainDispatcher; import org.apache.hadoop.yarn.event.Event; import org.apache.hadoop.yarn.event.EventHandler; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.logaggregation.AggregatedLogFormat; @@ -663,7 +664,7 @@ private void verifyContainerLogs( @Test public void testLogAggregationForRealContainerLaunch() throws IOException, - InterruptedException { + InterruptedException, YarnRemoteException { this.containerManager.start(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/TestContainersMonitor.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/TestContainersMonitor.java index ad4a818..3522e1d 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/TestContainersMonitor.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/TestContainersMonitor.java @@ -55,6 +55,7 @@ import org.apache.hadoop.yarn.api.records.URL; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.AsyncDispatcher; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.server.nodemanager.ContainerExecutor; import org.apache.hadoop.yarn.server.nodemanager.ContainerExecutor.ExitCode; import org.apache.hadoop.yarn.server.nodemanager.ContainerExecutor.Signal; @@ -177,7 +178,7 @@ public void testProcessTreeLimits() throws IOException { @Test public void testContainerKillOnMemoryOverflow() throws IOException, - InterruptedException { + InterruptedException, YarnRemoteException { if (!ProcfsBasedProcessTree.isAvailable()) { return; diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/amlauncher/AMLauncher.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/amlauncher/AMLauncher.java index a9d40eb..c664475 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/amlauncher/AMLauncher.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/amlauncher/AMLauncher.java @@ -50,6 +50,7 @@ import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.EventHandler; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.ipc.YarnRPC; @@ -98,7 +99,7 @@ private void connect() throws IOException { containerMgrProxy = getContainerMgrProxy(masterContainerID); } - private void launch() throws IOException { + private void launch() throws IOException, YarnRemoteException { connect(); ContainerId masterContainerID = masterContainer.getId(); ApplicationSubmissionContext applicationContext = @@ -116,7 +117,7 @@ private void launch() throws IOException { + " for AM " + application.getAppAttemptId()); } - private void cleanup() throws IOException { + private void cleanup() throws IOException, YarnRemoteException { connect(); ContainerId containerId = masterContainer.getId(); StopContainerRequest stopRequest = @@ -256,6 +257,8 @@ public void run() { cleanup(); } catch(IOException ie) { LOG.info("Error cleaning master ", ie); + } catch (YarnRemoteException e) { + LOG.info("Error cleaning master ", e); } break; default: diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/Application.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/Application.java index 3ce45ac..c9306e6 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/Application.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/Application.java @@ -46,6 +46,7 @@ import org.apache.hadoop.yarn.api.records.Priority; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.ResourceRequest; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.server.resourcemanager.Task.State; @@ -127,7 +128,7 @@ public Resource getUsedResources() { return used; } - public synchronized void submit() throws IOException { + public synchronized void submit() throws IOException, YarnRemoteException { ApplicationSubmissionContext context = recordFactory.newRecordInstance(ApplicationSubmissionContext.class); context.setApplicationId(this.applicationId); context.getAMContainerSpec().setUser(this.user); @@ -201,7 +202,8 @@ public synchronized void addTask(Task task) { addResourceRequest(priority, requests, ResourceRequest.ANY, capability); } - public synchronized void finishTask(Task task) throws IOException { + public synchronized void finishTask(Task task) throws IOException, + YarnRemoteException { Set tasks = this.tasks.get(task.getPriority()); if (!tasks.remove(task)) { throw new IllegalStateException( @@ -288,7 +290,7 @@ private synchronized void addResourceRequest( } public synchronized void assign(List containers) - throws IOException { + throws IOException, YarnRemoteException { int numContainers = containers.size(); // Schedule in priority order @@ -307,12 +309,12 @@ public synchronized void assign(List containers) assignedContainers + "/" + numContainers); } - public synchronized void schedule() throws IOException { + public synchronized void schedule() throws IOException, YarnRemoteException { assign(getResources()); } private synchronized void assign(Priority priority, NodeType type, - List containers) throws IOException { + List containers) throws IOException, YarnRemoteException { for (Iterator i=containers.iterator(); i.hasNext();) { Container container = i.next(); String host = container.getNodeId().toString(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/NodeManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/NodeManager.java index 46683dc..8a49624 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/NodeManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/NodeManager.java @@ -81,7 +81,7 @@ public NodeManager(String hostName, int containerManagerPort, int httpPort, String rackName, Resource capability, ResourceTrackerService resourceTrackerService, RMContext rmContext) - throws IOException { + throws IOException, YarnRemoteException { this.containerManagerAddress = hostName + ":" + containerManagerPort; this.nodeHttpAddress = hostName + ":" + httpPort; this.rackName = rackName; @@ -144,7 +144,7 @@ public Resource getUsed() { } return containerStatuses; } - public void heartbeat() throws IOException { + public void heartbeat() throws IOException, YarnRemoteException { NodeStatus nodeStatus = org.apache.hadoop.yarn.server.resourcemanager.NodeManager.createNodeStatus( nodeId, getContainerStatuses(containers)); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java index ae25e89..7b40c8a 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java @@ -209,8 +209,8 @@ public Void run() throws Exception { return null; } }); - } catch (YarnRemoteException e) { - Assert.assertEquals(e.getMessage(), + } catch (Exception e) { + Assert.assertEquals(e.getCause().getMessage(), "Client " + owner.getUserName() + " tries to renew a token with renewer specified as " + other.getUserName()); @@ -232,7 +232,7 @@ public Void run() throws Exception { } private void checkTokenRenewal(UserGroupInformation owner, - UserGroupInformation renewer) throws IOException { + UserGroupInformation renewer) throws IOException, YarnRemoteException { RMDelegationTokenIdentifier tokenIdentifier = new RMDelegationTokenIdentifier( new Text(owner.getUserName()), new Text(renewer.getUserName()), null); @@ -312,7 +312,8 @@ public void handle(Event event) {} @Test(timeout=4000) public void testConcurrentAppSubmit() - throws IOException, InterruptedException, BrokenBarrierException { + throws IOException, InterruptedException, BrokenBarrierException, + YarnRemoteException { YarnScheduler yarnScheduler = mockYarnScheduler(); RMContext rmContext = mock(RMContext.class); mockRMContext(yarnScheduler, rmContext); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMTokens.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMTokens.java index 5ee851b..df2d97f 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMTokens.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMTokens.java @@ -72,7 +72,8 @@ public void resetSecretManager() { } @Test - public void testDelegationToken() throws IOException, InterruptedException { + public void testDelegationToken() throws IOException, InterruptedException, + YarnRemoteException { final YarnConfiguration conf = new YarnConfiguration(); conf.set(YarnConfiguration.RM_PRINCIPAL, "testuser/localhost@apache.org"); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceManager.java index af95d2b..1dd81c9 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceManager.java @@ -35,6 +35,7 @@ import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.ResourceRequest; import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.server.resourcemanager.resource.Resources; import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode; import org.junit.After; @@ -59,7 +60,8 @@ public void tearDown() throws Exception { private org.apache.hadoop.yarn.server.resourcemanager.NodeManager registerNode(String hostName, int containerManagerPort, int httpPort, - String rackName, Resource capability) throws IOException { + String rackName, Resource capability) throws IOException, + YarnRemoteException { return new org.apache.hadoop.yarn.server.resourcemanager.NodeManager( hostName, containerManagerPort, httpPort, rackName, capability, resourceManager.getResourceTrackerService(), resourceManager @@ -67,7 +69,8 @@ public void tearDown() throws Exception { } // @Test - public void testResourceAllocation() throws IOException { + public void testResourceAllocation() throws IOException, + YarnRemoteException { LOG.info("--- START: testResourceAllocation ---"); final int memory = 4 * 1024; diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/resourcetracker/TestRMNMRPCResponseId.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/resourcetracker/TestRMNMRPCResponseId.java index d4ac7b5..b316511 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/resourcetracker/TestRMNMRPCResponseId.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/resourcetracker/TestRMNMRPCResponseId.java @@ -28,6 +28,7 @@ import org.apache.hadoop.yarn.event.Event; import org.apache.hadoop.yarn.event.EventHandler; import org.apache.hadoop.yarn.event.InlineDispatcher; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatRequest; @@ -88,7 +89,7 @@ public void tearDown() { } @Test - public void testRPCResponseId() throws IOException { + public void testRPCResponseId() throws IOException, YarnRemoteException { String node = "localhost"; Resource capability = BuilderUtils.newResource(1024, 1); RegisterNodeManagerRequest request = recordFactory.newRecordInstance(RegisterNodeManagerRequest.class); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java index 66f9059..1bb6a0e 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java @@ -37,6 +37,7 @@ import org.apache.hadoop.yarn.api.records.ResourceRequest; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.AsyncDispatcher; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.server.resourcemanager.Application; import org.apache.hadoop.yarn.server.resourcemanager.MockNodes; import org.apache.hadoop.yarn.server.resourcemanager.RMContextImpl; @@ -101,7 +102,7 @@ public void tearDown() throws Exception { private org.apache.hadoop.yarn.server.resourcemanager.NodeManager registerNode(String hostName, int containerManagerPort, int httpPort, String rackName, Resource capability) - throws IOException { + throws IOException, YarnRemoteException { return new org.apache.hadoop.yarn.server.resourcemanager.NodeManager( hostName, containerManagerPort, httpPort, rackName, capability, resourceManager.getResourceTrackerService(), resourceManager diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/TestFifoScheduler.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/TestFifoScheduler.java index 85076ba..0ee3a52 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/TestFifoScheduler.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/TestFifoScheduler.java @@ -38,6 +38,7 @@ import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.event.AsyncDispatcher; import org.apache.hadoop.yarn.event.InlineDispatcher; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.factories.RecordFactory; import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider; import org.apache.hadoop.yarn.server.resourcemanager.Application; @@ -84,7 +85,8 @@ public void tearDown() throws Exception { private org.apache.hadoop.yarn.server.resourcemanager.NodeManager registerNode(String hostName, int containerManagerPort, int nmHttpPort, - String rackName, Resource capability) throws IOException { + String rackName, Resource capability) throws IOException, + YarnRemoteException { return new org.apache.hadoop.yarn.server.resourcemanager.NodeManager( hostName, containerManagerPort, nmHttpPort, rackName, capability, resourceManager.getResourceTrackerService(), resourceManager diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/security/TestClientTokens.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/security/TestClientTokens.java index 3f02fd2..93d5839 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/security/TestClientTokens.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/security/TestClientTokens.java @@ -282,10 +282,11 @@ public Void run() throws Exception { return null; } }); - } catch (YarnRemoteException e) { - fail("Cannot get a YARN remote exception as " - + "it will indicate RPC success"); } catch (Exception e) { + if (e instanceof YarnRemoteException) { + fail("Cannot get a YARN remote exception as " + + "it will indicate RPC success"); + } Assert .assertEquals(java.lang.reflect.UndeclaredThrowableException.class .getCanonicalName(), e.getClass().getCanonicalName()); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java index 8ab0099..61ec3dd 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java @@ -362,7 +362,7 @@ public NodeHeartbeatResponse nodeHeartbeat( NodeHeartbeatResponse.class); try { response = rt.nodeHeartbeat(request); - } catch (IOException ioe) { + } catch (YarnRemoteException ioe) { LOG.info("Exception in heartbeat from node " + request.getNodeStatus().getNodeId(), ioe); throw RPCUtil.getRemoteException(ioe); @@ -378,7 +378,7 @@ public RegisterNodeManagerResponse registerNodeManager( newRecordInstance(RegisterNodeManagerResponse.class); try { response = rt.registerNodeManager(request); - } catch (IOException ioe) { + } catch (YarnRemoteException ioe) { LOG.info("Exception in node registration from " + request.getNodeId().toString(), ioe); throw RPCUtil.getRemoteException(ioe); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestContainerManagerSecurity.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestContainerManagerSecurity.java index 46fffb4..b0f9fa2 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestContainerManagerSecurity.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestContainerManagerSecurity.java @@ -128,7 +128,7 @@ public static void teardown() { @Test public void testAuthenticatedUser() throws IOException, - InterruptedException { + InterruptedException, YarnRemoteException { LOG.info("Running test for authenticated user"); @@ -180,7 +180,8 @@ public Void run() throws Exception { } @Test - public void testMaliceUser() throws IOException, InterruptedException { + public void testMaliceUser() throws IOException, InterruptedException, + YarnRemoteException { LOG.info("Running test for malice user"); @@ -266,7 +267,8 @@ public Void run() { } @Test - public void testUnauthorizedUser() throws IOException, InterruptedException { + public void testUnauthorizedUser() throws IOException, InterruptedException, + YarnRemoteException { LOG.info("\n\nRunning test for malice user"); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java index 86ab1ed..a44d084 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java @@ -50,6 +50,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.ApplicationReport; import org.apache.hadoop.yarn.conf.YarnConfiguration; +import org.apache.hadoop.yarn.exceptions.YarnRemoteException; import org.apache.hadoop.yarn.util.Apps; import org.apache.hadoop.yarn.util.StringHelper; import org.apache.hadoop.yarn.util.TrackingUriPlugin; @@ -215,7 +216,8 @@ private boolean isSecurityEnabled() { return false; } - private ApplicationReport getApplicationReport(ApplicationId id) throws IOException { + private ApplicationReport getApplicationReport(ApplicationId id) + throws IOException, YarnRemoteException { return ((AppReportFetcher) getServletContext() .getAttribute(WebAppProxy.FETCHER_ATTRIBUTE)).getApplicationReport(id); } @@ -333,6 +335,8 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) } catch(URISyntaxException e) { throw new IOException(e); + } catch (YarnRemoteException e) { + throw new IOException(e); } } }