walterddr commented on a change in pull request #7356: [FLINK-10868][flink-yarn] Enforce maximum failed TMs in YarnResourceManager URL: https://github.com/apache/flink/pull/7356#discussion_r246635359
########## File path: flink-yarn/src/test/java/org/apache/flink/yarn/YarnResourceManagerTest.java ########## @@ -512,4 +517,53 @@ public void testOnContainerCompleted() throws Exception { }); }}; } + + /** + * Tests that YarnResourceManager will trigger to reject all pending slot request, when maximum number of failed + * contains is hit. + */ + @Test + public void testOnContainersAllocatedWithFailure() throws Exception { + new Context() {{ + runTest(() -> { + CompletableFuture<?> registerSlotRequestFuture = resourceManager.runInMainThread(() -> { + rmServices.slotManager.registerSlotRequest( + new SlotRequest(new JobID(), new AllocationID(), resourceProfile1, taskHost)); + return null; + }); + + // wait for the registerSlotRequest completion + registerSlotRequestFuture.get(); + + // Callback from YARN when container is allocated. + Container disconnectedContainer1 = mockContainer("container1", 1234, 1); + resourceManager.onContainersAllocated(ImmutableList.of(disconnectedContainer1)); + verify(mockResourceManagerClient).addContainerRequest(any(AMRMClient.ContainerRequest.class)); + verify(mockNMClient).startContainer(eq(disconnectedContainer1), any(ContainerLaunchContext.class)); + + ResourceID connectedTM = new ResourceID(disconnectedContainer1.getId().toString()); + + resourceManager.registerTaskExecutor("container1", connectedTM, 1234, + hardwareDescription, Time.seconds(10L)); + + // force to unregister the task manager + resourceManager.disconnectTaskManager(connectedTM, new TimeoutException()); + + // request second slot + registerSlotRequestFuture = resourceManager.runInMainThread(() -> { + rmServices.slotManager.registerSlotRequest( + new SlotRequest(new JobID(), new AllocationID(), resourceProfile1, taskHost)); Review comment: can probably mock this so that no need to spy on the `slotManager` ? verify `request.completeExceptionally()` has been call should be suffice. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services