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/02/09 18:34:43 UTC

aurora git commit: Update to Mesos 0.26.0

Repository: aurora
Updated Branches:
  refs/heads/master 3cb6cc3f4 -> dd7993490


Update to Mesos 0.26.0

Release notes: https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=0.26.0

Reviewed at https://reviews.apache.org/r/43253/


Project: http://git-wip-us.apache.org/repos/asf/aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/dd799349
Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/dd799349
Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/dd799349

Branch: refs/heads/master
Commit: dd799349016866163cdbfb82e30e3e2b32af5428
Parents: 3cb6cc3
Author: Joshua Cohen <jc...@apache.org>
Authored: Tue Feb 9 11:34:18 2016 -0600
Committer: Joshua Cohen <jc...@apache.org>
Committed: Tue Feb 9 11:34:18 2016 -0600

----------------------------------------------------------------------
 3rdparty/python/BUILD                           |  2 +-
 NEWS                                            |  7 ++++
 build.gradle                                    |  2 +-
 examples/vagrant/provision-dev-cluster.sh       |  4 +-
 .../aurora/scheduler/TaskStatusHandlerImpl.java | 10 ++++-
 .../mesos/CommandLineDriverSettingsModule.java  |  3 +-
 .../scheduler/mesos/MesosSchedulerImpl.java     |  2 +-
 .../scheduler/TaskStatusHandlerImplTest.java    | 43 +++++++++++++++++---
 .../scheduler/mesos/TaskStatusStatsTest.java    | 16 ++++++--
 9 files changed, 72 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/dd799349/3rdparty/python/BUILD
----------------------------------------------------------------------
diff --git a/3rdparty/python/BUILD b/3rdparty/python/BUILD
index 943ee5d..e7a1fe4 100644
--- a/3rdparty/python/BUILD
+++ b/3rdparty/python/BUILD
@@ -11,7 +11,7 @@
 # limitations under the License.
 #
 
-MESOS_REV = '0.25.0'
+MESOS_REV = '0.26.0'
 
 python_requirement_library(
   name = 'mesos.interface',

http://git-wip-us.apache.org/repos/asf/aurora/blob/dd799349/NEWS
----------------------------------------------------------------------
diff --git a/NEWS b/NEWS
index 395c281..bc3dcfb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+0.13.0
+------
+
+New/updated:
+
+- Upgraded Mesos to 0.26.0
+
 0.12.0
 ------
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/dd799349/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
index 5b9e015..3d37187 100644
--- a/build.gradle
+++ b/build.gradle
@@ -358,7 +358,7 @@ dependencies {
   compile 'javax.inject:javax.inject:1'
   compile "javax.servlet:javax.servlet-api:${servletRev}"
   compile "org.antlr:stringtemplate:${stringTemplateRev}"
-  compile 'org.apache.mesos:mesos:0.25.0'
+  compile 'org.apache.mesos:mesos:0.26.0'
   compile "org.apache.shiro:shiro-guice:${shiroRev}"
   compile "org.apache.shiro:shiro-web:${shiroRev}"
   compile "org.apache.zookeeper:zookeeper:${zookeeperRev}"

http://git-wip-us.apache.org/repos/asf/aurora/blob/dd799349/examples/vagrant/provision-dev-cluster.sh
----------------------------------------------------------------------
diff --git a/examples/vagrant/provision-dev-cluster.sh b/examples/vagrant/provision-dev-cluster.sh
index fc8915f..7f71af2 100755
--- a/examples/vagrant/provision-dev-cluster.sh
+++ b/examples/vagrant/provision-dev-cluster.sh
@@ -34,7 +34,7 @@ update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
 
 readonly IP_ADDRESS=192.168.33.7
 
-readonly MESOS_VERSION=0.25.0
+readonly MESOS_VERSION=0.26.0
 
 function prepare_extras() {
   pushd aurora
@@ -59,7 +59,7 @@ function prepare_extras() {
 }
 
 function install_mesos {
-  deb=mesos_${MESOS_VERSION}-0.2.70.ubuntu1404_amd64.deb
+  deb=mesos_${MESOS_VERSION}-0.2.145.ubuntu1404_amd64.deb
   wget -c http://downloads.mesosphere.io/master/ubuntu/14.04/$deb
   dpkg --install $deb
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/dd799349/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 260a7b8..d4de225 100644
--- a/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java
@@ -59,6 +59,9 @@ public class TaskStatusHandlerImpl extends AbstractExecutionThreadService
   @VisibleForTesting
   static final String MEMORY_LIMIT_DISPLAY = "Task used more memory than requested.";
 
+  @VisibleForTesting
+  static final String DISK_LIMIT_DISPLAY = "Task used more disk than requested.";
+
   private static final String STATUS_STAT_FORMAT = "status_update_%s_%s";
 
   private final Storage storage;
@@ -187,11 +190,16 @@ public class TaskStatusHandlerImpl extends AbstractExecutionThreadService
 
     if (status.hasReason()) {
       switch (status.getReason()) {
-        case REASON_MEMORY_LIMIT:
+        case REASON_CONTAINER_LIMITATION_MEMORY:
           // Add a failure explanation to the user
           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);
+          break;
+
         case REASON_EXECUTOR_UNREGISTERED:
           // Suppress "Unregistered executor" message as it bears no meaning to the user.
           message = Optional.absent();

http://git-wip-us.apache.org/repos/asf/aurora/blob/dd799349/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java b/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
index 7de8f4c..5c6cdd2 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
@@ -25,7 +25,6 @@ import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Throwables;
 import com.google.inject.AbstractModule;
-import com.google.protobuf.ByteString;
 
 import org.apache.aurora.common.args.Arg;
 import org.apache.aurora.common.args.CmdLine;
@@ -135,7 +134,7 @@ public class CommandLineDriverSettingsModule extends AbstractModule {
 
       return Optional.of(Protos.Credential.newBuilder()
           .setPrincipal(properties.getProperty(PRINCIPAL_KEY))
-          .setSecret(ByteString.copyFromUtf8(properties.getProperty(SECRET_KEY)))
+          .setSecret(properties.getProperty(SECRET_KEY))
           .build());
     } else {
       return Optional.absent();

http://git-wip-us.apache.org/repos/asf/aurora/blob/dd799349/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java b/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
index cc06b85..85ca0ea 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
@@ -255,7 +255,7 @@ public class MesosSchedulerImpl implements Scheduler {
   public void executorLost(SchedulerDriver schedulerDriver, ExecutorID executorID, SlaveID slaveID,
       int status) {
 
-    log.info("Lost executor " + executorID);
+    log.warn("Lost executor " + executorID);
     counters.get("scheduler_lost_executors").incrementAndGet();
   }
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/dd799349/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 0d41466..62ada33 100644
--- a/src/test/java/org/apache/aurora/scheduler/TaskStatusHandlerImplTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/TaskStatusHandlerImplTest.java
@@ -100,7 +100,7 @@ public class TaskStatusHandlerImplTest extends EasyMockTest {
         Optional.of("fake message")))
         .andReturn(StateChangeResult.SUCCESS);
 
-    final CountDownLatch latch = new CountDownLatch(1);
+    CountDownLatch latch = new CountDownLatch(1);
 
     driver.acknowledgeStatusUpdate(status);
     waitAndAnswer(latch);
@@ -116,7 +116,7 @@ public class TaskStatusHandlerImplTest extends EasyMockTest {
   public void testFailedStatusUpdate() throws Exception {
     storageUtil.expectWrite();
 
-    final CountDownLatch latch = new CountDownLatch(1);
+    CountDownLatch latch = new CountDownLatch(1);
 
     expect(stateManager.changeState(
         storageUtil.mutableStoreProvider,
@@ -149,7 +149,7 @@ public class TaskStatusHandlerImplTest extends EasyMockTest {
     TaskStatus status = TaskStatus.newBuilder()
         .setState(TaskState.TASK_FAILED)
         .setTaskId(TaskID.newBuilder().setValue(TASK_ID_A))
-        .setReason(TaskStatus.Reason.REASON_MEMORY_LIMIT)
+        .setReason(TaskStatus.Reason.REASON_CONTAINER_LIMITATION_MEMORY)
         .setMessage("Some Message")
         .build();
 
@@ -161,7 +161,38 @@ public class TaskStatusHandlerImplTest extends EasyMockTest {
         Optional.of(TaskStatusHandlerImpl.MEMORY_LIMIT_DISPLAY)))
         .andReturn(StateChangeResult.SUCCESS);
 
-    final CountDownLatch latch = new CountDownLatch(1);
+    CountDownLatch latch = new CountDownLatch(1);
+
+    driver.acknowledgeStatusUpdate(status);
+    waitAndAnswer(latch);
+
+    control.replay();
+
+    statusHandler.statusUpdate(status);
+
+    assertTrue(latch.await(5L, TimeUnit.SECONDS));
+  }
+
+  @Test
+  public void testDiskLimitTranslation() throws Exception {
+    storageUtil.expectWrite();
+
+    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();
+
+    expect(stateManager.changeState(
+        storageUtil.mutableStoreProvider,
+        TASK_ID_A,
+        Optional.absent(),
+        FAILED,
+        Optional.of(TaskStatusHandlerImpl.DISK_LIMIT_DISPLAY)))
+        .andReturn(StateChangeResult.SUCCESS);
+
+    CountDownLatch latch = new CountDownLatch(1);
 
     driver.acknowledgeStatusUpdate(status);
     waitAndAnswer(latch);
@@ -192,7 +223,7 @@ public class TaskStatusHandlerImplTest extends EasyMockTest {
         Optional.absent()))
         .andReturn(StateChangeResult.SUCCESS);
 
-    final CountDownLatch latch = new CountDownLatch(1);
+    CountDownLatch latch = new CountDownLatch(1);
 
     driver.acknowledgeStatusUpdate(status);
     waitAndAnswer(latch);
@@ -229,7 +260,7 @@ public class TaskStatusHandlerImplTest extends EasyMockTest {
       throw new RuntimeException();
     });
 
-    final CountDownLatch latch = new CountDownLatch(1);
+    CountDownLatch latch = new CountDownLatch(1);
 
     driver.abort();
     waitAndAnswer(latch);

http://git-wip-us.apache.org/repos/asf/aurora/blob/dd799349/src/test/java/org/apache/aurora/scheduler/mesos/TaskStatusStatsTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/mesos/TaskStatusStatsTest.java b/src/test/java/org/apache/aurora/scheduler/mesos/TaskStatusStatsTest.java
index 7e0709f..a48c85b 100644
--- a/src/test/java/org/apache/aurora/scheduler/mesos/TaskStatusStatsTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/mesos/TaskStatusStatsTest.java
@@ -64,7 +64,7 @@ public class TaskStatusStatsTest extends EasyMockTest {
     expect(statsProvider.makeRequestTimer(latencyTimerName(Source.SOURCE_MASTER)))
         .andReturn(masterDeliveryDelay);
     masterDeliveryDelay.requestComplete(ONE_SECOND.as(Time.MICROSECONDS));
-    expectLastCall().times(3);
+    expectLastCall().times(4);
 
     AtomicLong masterLostCounter = new AtomicLong();
     expect(statsProvider.makeCounter(lostCounterName(Source.SOURCE_MASTER)))
@@ -75,9 +75,13 @@ public class TaskStatusStatsTest extends EasyMockTest {
         .andReturn(slaveDisconnectedCounter);
 
     AtomicLong memoryLimitCounter = new AtomicLong();
-    expect(statsProvider.makeCounter(reasonCounterName(Reason.REASON_MEMORY_LIMIT)))
+    expect(statsProvider.makeCounter(reasonCounterName(Reason.REASON_CONTAINER_LIMITATION_MEMORY)))
         .andReturn(memoryLimitCounter);
 
+    AtomicLong diskLimitCounter = new AtomicLong();
+    expect(statsProvider.makeCounter(reasonCounterName(Reason.REASON_CONTAINER_LIMITATION_DISK)))
+        .andReturn(diskLimitCounter);
+
     control.replay();
 
     clock.advance(Amount.of(1L, Time.HOURS));
@@ -96,7 +100,12 @@ public class TaskStatusStatsTest extends EasyMockTest {
     eventBus.post(new TaskStatusReceived(
         TaskState.TASK_FAILED,
         Optional.of(Source.SOURCE_MASTER),
-        Optional.of(Reason.REASON_MEMORY_LIMIT),
+        Optional.of(Reason.REASON_CONTAINER_LIMITATION_MEMORY),
+        Optional.of(agoMicros(ONE_SECOND))));
+    eventBus.post(new TaskStatusReceived(
+        TaskState.TASK_FAILED,
+        Optional.of(Source.SOURCE_MASTER),
+        Optional.of(Reason.REASON_CONTAINER_LIMITATION_DISK),
         Optional.of(agoMicros(ONE_SECOND))));
 
     // No counting for these since they do not have both a source and timestamp.
@@ -127,5 +136,6 @@ public class TaskStatusStatsTest extends EasyMockTest {
     assertEquals(3L, masterLostCounter.get());
     assertEquals(3L, slaveDisconnectedCounter.get());
     assertEquals(1L, memoryLimitCounter.get());
+    assertEquals(1L, diskLimitCounter.get());
   }
 }