You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by jc...@apache.org on 2016/04/05 20:10:17 UTC

aurora git commit: Use message provided by Mesos if present when tasks fail due to resource limit violations.

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 <jc...@apache.org>
Authored: Tue Apr 5 13:09:56 2016 -0500
Committer: Joshua Cohen <jc...@apache.org>
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