You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by ma...@apache.org on 2015/08/13 23:48:02 UTC

aurora git commit: Making scheduler loop continue after mismatch.

Repository: aurora
Updated Branches:
  refs/heads/master 887ffd2c4 -> 76d5a49ab


Making scheduler loop continue after mismatch.

Bugs closed: AURORA-1435

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


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

Branch: refs/heads/master
Commit: 76d5a49ab9720e7fc4b2ee417f91ddb6bb45c671
Parents: 887ffd2
Author: Maxim Khutornenko <ma...@apache.org>
Authored: Thu Aug 13 14:47:37 2015 -0700
Committer: Maxim Khutornenko <ma...@apache.org>
Committed: Thu Aug 13 14:47:37 2015 -0700

----------------------------------------------------------------------
 .../aurora/scheduler/state/TaskAssigner.java    |  1 -
 .../scheduler/state/TaskAssignerImplTest.java   | 49 ++++++++++++++++++++
 2 files changed, 49 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/76d5a49a/src/main/java/org/apache/aurora/scheduler/state/TaskAssigner.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/state/TaskAssigner.java b/src/main/java/org/apache/aurora/scheduler/state/TaskAssigner.java
index 14d70df..38375db 100644
--- a/src/main/java/org/apache/aurora/scheduler/state/TaskAssigner.java
+++ b/src/main/java/org/apache/aurora/scheduler/state/TaskAssigner.java
@@ -186,7 +186,6 @@ public interface TaskAssigner {
 
           LOG.fine("Slave " + offer.getOffer().getHostname()
               + " vetoed task " + taskId + ": " + vetoes);
-          return false;
         }
       }
       return false;

http://git-wip-us.apache.org/repos/asf/aurora/blob/76d5a49a/src/test/java/org/apache/aurora/scheduler/state/TaskAssignerImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/state/TaskAssignerImplTest.java b/src/test/java/org/apache/aurora/scheduler/state/TaskAssignerImplTest.java
index 1de1d1f..99bc80a 100644
--- a/src/test/java/org/apache/aurora/scheduler/state/TaskAssignerImplTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/state/TaskAssignerImplTest.java
@@ -274,4 +274,53 @@ public class TaskAssignerImplTest extends EasyMockTest {
         Tasks.id(TASK),
         ImmutableMap.of(SLAVE_ID, GROUP_KEY)));
   }
+
+  @Test
+  public void testAssignerDoesNotReturnOnFirstMismatch() throws Exception {
+    // Ensures scheduling loop does not terminate prematurely when the first mismatch is identified.
+    HostOffer mismatched = new HostOffer(
+        Offer.newBuilder()
+            .setId(OfferID.newBuilder().setValue("offerId0"))
+            .setFrameworkId(FrameworkID.newBuilder().setValue("frameworkId"))
+            .setSlaveId(SlaveID.newBuilder().setValue("slaveId0"))
+            .setHostname("hostName0")
+            .addResources(Resource.newBuilder()
+                .setName("ports")
+                .setType(Type.RANGES)
+                .setRanges(
+                    Ranges.newBuilder().addRange(Range.newBuilder().setBegin(PORT).setEnd(PORT))))
+            .build(),
+        IHostAttributes.build(new HostAttributes()));
+
+    expect(offerManager.getOffers(GROUP_KEY)).andReturn(ImmutableSet.of(mismatched, OFFER));
+    expect(filter.filter(
+        new UnusedResource(ResourceSlot.from(mismatched.getOffer()), mismatched.getAttributes()),
+        new ResourceRequest(TASK.getAssignedTask().getTask(), EMPTY)))
+        .andReturn(ImmutableSet.of(Veto.constraintMismatch("constraint mismatch")));
+    offerManager.banOffer(mismatched.getOffer().getId(), GROUP_KEY);
+    expect(filter.filter(
+        new UnusedResource(ResourceSlot.from(OFFER.getOffer()), OFFER.getAttributes()),
+        new ResourceRequest(TASK.getAssignedTask().getTask(), EMPTY)))
+        .andReturn(ImmutableSet.of());
+
+    expect(stateManager.assignTask(
+        storeProvider,
+        Tasks.id(TASK),
+        OFFER.getOffer().getHostname(),
+        OFFER.getOffer().getSlaveId(),
+        ImmutableMap.of(PORT_NAME, PORT)))
+        .andReturn(TASK.getAssignedTask());
+    expect(taskFactory.createFrom(TASK.getAssignedTask(), OFFER.getOffer().getSlaveId()))
+        .andReturn(TASK_INFO);
+    offerManager.launchTask(OFFER.getOffer().getId(), TASK_INFO);
+
+    control.replay();
+
+    assertTrue(assigner.maybeAssign(
+        storeProvider,
+        new ResourceRequest(TASK.getAssignedTask().getTask(), EMPTY),
+        TaskGroupKey.from(TASK.getAssignedTask().getTask()),
+        Tasks.id(TASK),
+        ImmutableMap.of(SLAVE_ID, GROUP_KEY)));
+  }
 }