Repository: aurora Updated Branches: refs/heads/master 663d13f23 -> 51097889c
Use message provided by Mesos if present when tasks fail due to resource limit violations. Reviewed at https://reviews.apache.org/r/45754/ Project: http://git-wip-us.apache.org/repos/asf/aurora/repo Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/51097889 Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/51097889 Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/51097889 Branch: refs/heads/master Commit: 51097889ccc31fe4cc7201ad0f6498e69130ad0d Parents: 663d13f Author: Joshua Cohen <[email protected]> Authored: Tue Apr 5 13:09:56 2016 -0500 Committer: Joshua Cohen <[email protected]> Committed: Tue Apr 5 13:09:56 2016 -0500 ---------------------------------------------------------------------- .../aurora/scheduler/TaskStatusHandlerImpl.java | 8 ++- .../scheduler/TaskStatusHandlerImplTest.java | 70 ++++++++++++-------- 2 files changed, 47 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/aurora/blob/51097889/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java b/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java index d4de225..a83f183 100644 --- a/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java +++ b/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java @@ -192,12 +192,16 @@ public class TaskStatusHandlerImpl extends AbstractExecutionThreadService switch (status.getReason()) { case REASON_CONTAINER_LIMITATION_MEMORY: // Add a failure explanation to the user - message = Optional.of(MEMORY_LIMIT_DISPLAY); + if (!message.isPresent()) { + message = Optional.of(MEMORY_LIMIT_DISPLAY); + } break; case REASON_CONTAINER_LIMITATION_DISK: // Add a failure explanation to the user - message = Optional.of(DISK_LIMIT_DISPLAY); + if (!message.isPresent()) { + message = Optional.of(DISK_LIMIT_DISPLAY); + } break; case REASON_EXECUTOR_UNREGISTERED: http://git-wip-us.apache.org/repos/asf/aurora/blob/51097889/src/test/java/org/apache/aurora/scheduler/TaskStatusHandlerImplTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/aurora/scheduler/TaskStatusHandlerImplTest.java b/src/test/java/org/apache/aurora/scheduler/TaskStatusHandlerImplTest.java index 62ada33..6d4934b 100644 --- a/src/test/java/org/apache/aurora/scheduler/TaskStatusHandlerImplTest.java +++ b/src/test/java/org/apache/aurora/scheduler/TaskStatusHandlerImplTest.java @@ -142,23 +142,30 @@ public class TaskStatusHandlerImplTest extends EasyMockTest { assertTrue(latch.await(5L, TimeUnit.SECONDS)); } - @Test - public void testMemoryLimitTranslation() throws Exception { + private void assertResourceLimitBehavior( + TaskStatus.Reason reason, + Optional<String> mesosMessage, + Optional<String> expectedMessage) throws Exception { + storageUtil.expectWrite(); - TaskStatus status = TaskStatus.newBuilder() + TaskStatus.Builder taskStatusBuilder = TaskStatus.newBuilder() .setState(TaskState.TASK_FAILED) .setTaskId(TaskID.newBuilder().setValue(TASK_ID_A)) - .setReason(TaskStatus.Reason.REASON_CONTAINER_LIMITATION_MEMORY) - .setMessage("Some Message") - .build(); + .setReason(reason); + + if (mesosMessage.isPresent()) { + taskStatusBuilder.setMessage(mesosMessage.get()); + } + + TaskStatus status = taskStatusBuilder.build(); expect(stateManager.changeState( storageUtil.mutableStoreProvider, TASK_ID_A, Optional.absent(), FAILED, - Optional.of(TaskStatusHandlerImpl.MEMORY_LIMIT_DISPLAY))) + expectedMessage)) .andReturn(StateChangeResult.SUCCESS); CountDownLatch latch = new CountDownLatch(1); @@ -174,34 +181,39 @@ public class TaskStatusHandlerImplTest extends EasyMockTest { } @Test - public void testDiskLimitTranslation() throws Exception { - storageUtil.expectWrite(); + public void testMemoryLimitTranslation() throws Exception { + Optional<String> message = Optional.of("Some message"); - TaskStatus status = TaskStatus.newBuilder() - .setState(TaskState.TASK_FAILED) - .setTaskId(TaskID.newBuilder().setValue(TASK_ID_A)) - .setReason(TaskStatus.Reason.REASON_CONTAINER_LIMITATION_DISK) - .setMessage("Some Message") - .build(); + assertResourceLimitBehavior( + TaskStatus.Reason.REASON_CONTAINER_LIMITATION_MEMORY, + message, + message); + } - expect(stateManager.changeState( - storageUtil.mutableStoreProvider, - TASK_ID_A, + @Test + public void testMemoryLimitTranslationNoMessage() throws Exception { + assertResourceLimitBehavior( + TaskStatus.Reason.REASON_CONTAINER_LIMITATION_MEMORY, Optional.absent(), - FAILED, - Optional.of(TaskStatusHandlerImpl.DISK_LIMIT_DISPLAY))) - .andReturn(StateChangeResult.SUCCESS); - - CountDownLatch latch = new CountDownLatch(1); - - driver.acknowledgeStatusUpdate(status); - waitAndAnswer(latch); + Optional.of(TaskStatusHandlerImpl.MEMORY_LIMIT_DISPLAY)); + } - control.replay(); + @Test + public void testDiskLimitTranslation() throws Exception { + Optional<String> message = Optional.of("Some message"); - statusHandler.statusUpdate(status); + assertResourceLimitBehavior( + TaskStatus.Reason.REASON_CONTAINER_LIMITATION_DISK, + message, + message); + } - assertTrue(latch.await(5L, TimeUnit.SECONDS)); + @Test + public void testDiskLimitTranslationNoMessage() throws Exception { + assertResourceLimitBehavior( + TaskStatus.Reason.REASON_CONTAINER_LIMITATION_DISK, + Optional.absent(), + Optional.of(TaskStatusHandlerImpl.DISK_LIMIT_DISPLAY)); } @Test
