private void handleInvalidResourceException(InvalidResourceRequestException e, RMAppAttempt rmAppAttempt) throws InvalidResourceRequestException { if (e.getInvalidResourceType() == LESS_THAN_ZERO || e.getInvalidResourceType() == GREATER_THEN_MAX_ALLOCATION) { rmAppAttempt.updateAMLaunchDiagnostics(e.getMessage()); } LOG.warn("Invalid resource ask by application " + rmAppAttempt.getAppAttemptId(), e); throw e; }
@Test public void testRMAppSubmitNoResourceRequests() throws Exception { asContext.setResource(null); asContext.setAMContainerResourceRequests(null); try { testRMAppSubmit(); Assert.fail("Should have failed due to no ResourceRequest"); } catch (InvalidResourceRequestException e) { Assert.assertEquals( "Invalid resource request, no resources requested", e.getMessage()); } }
@Test public void testRMAppSubmitAMContainerResourceRequestsTwoManyAny() throws Exception { asContext.setResource(null); List<ResourceRequest> reqs = new ArrayList<>(); reqs.add(ResourceRequest.newInstance(Priority.newInstance(1), ResourceRequest.ANY, Resources.createResource(1025), 1, false)); reqs.add(ResourceRequest.newInstance(Priority.newInstance(1), ResourceRequest.ANY, Resources.createResource(1025), 1, false)); asContext.setAMContainerResourceRequests(cloneResourceRequests(reqs)); // getAMContainerResourceRequest uses the first entry of // getAMContainerResourceRequests Assert.assertEquals(reqs, asContext.getAMContainerResourceRequests()); try { testRMAppSubmit(); Assert.fail("Should have failed due to too many ANY ResourceRequests"); } catch (InvalidResourceRequestException e) { Assert.assertEquals( "Invalid resource request, only one resource request with * is " + "allowed", e.getMessage()); } }
@Test public void testRMAppSubmitAMContainerResourceRequestsNoAny() throws Exception { asContext.setResource(null); List<ResourceRequest> reqs = new ArrayList<>(); reqs.add(ResourceRequest.newInstance(Priority.newInstance(1), "/rack", Resources.createResource(1025), 1, false)); reqs.add(ResourceRequest.newInstance(Priority.newInstance(1), "/rack/node", Resources.createResource(1025), 1, true)); asContext.setAMContainerResourceRequests(cloneResourceRequests(reqs)); // getAMContainerResourceRequest uses the first entry of // getAMContainerResourceRequests Assert.assertEquals(reqs, asContext.getAMContainerResourceRequests()); try { testRMAppSubmit(); Assert.fail("Should have failed due to missing ANY ResourceRequest"); } catch (InvalidResourceRequestException e) { Assert.assertEquals( "Invalid resource request, no resource request specified with *", e.getMessage()); } }
} catch (InvalidResourceRequestException e) { assertEquals("Invalid label resource request, cluster do not contain , " + "label= x", e.getMessage()); } catch (InvalidResourceRequestException e) { assertEquals("Invalid resource request, node label not enabled but " + "request contains label expression", e.getMessage());