You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myriad.apache.org by yu...@apache.org on 2016/10/18 06:27:33 UTC

incubator-myriad git commit: Used reserved resources firstly.

Repository: incubator-myriad
Updated Branches:
  refs/heads/master 577c30b1a -> 382eb7bc7


Used reserved resources firstly.


Project: http://git-wip-us.apache.org/repos/asf/incubator-myriad/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-myriad/commit/382eb7bc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-myriad/tree/382eb7bc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-myriad/diff/382eb7bc

Branch: refs/heads/master
Commit: 382eb7bc77cec1ac7a13d027d8c28cfb1a379a6b
Parents: 577c30b
Author: Klaus Ma <kl...@gmail.com>
Authored: Fri Oct 7 21:49:58 2016 +0800
Committer: Klaus Ma <kl...@gmail.com>
Committed: Fri Oct 7 21:58:42 2016 +0800

----------------------------------------------------------------------
 .../handlers/ResourceOffersEventHandler.java    | 27 ++++++++++++++++++++
 1 file changed, 27 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/382eb7bc/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/event/handlers/ResourceOffersEventHandler.java
----------------------------------------------------------------------
diff --git a/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/event/handlers/ResourceOffersEventHandler.java b/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/event/handlers/ResourceOffersEventHandler.java
index c65ad4a..04fd14c 100644
--- a/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/event/handlers/ResourceOffersEventHandler.java
+++ b/myriad-scheduler/src/main/java/org/apache/myriad/scheduler/event/handlers/ResourceOffersEventHandler.java
@@ -43,6 +43,8 @@ import org.apache.myriad.state.SchedulerState;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.myriad.configuration.MyriadConfiguration.DEFAULT_ROLE;
+
 /**
  * handles and logs resource offers events
  */
@@ -83,6 +85,31 @@ public class ResourceOffersEventHandler implements EventHandler<ResourceOffersEv
     }
     LOGGER.debug("Received offers {}", offers.size());
     LOGGER.debug("Pending tasks: {}", this.schedulerState.getPendingTaskIds());
+
+    // Let Myriad use reserved resources firstly.
+    Collections.sort(offers, new Comparator<Offer>() {
+      boolean isReserved(Offer o) {
+        for (Protos.Resource resource : o.getResourcesList()) {
+          if (resource.hasRole() && !Objects.equals(resource.getRole(), DEFAULT_ROLE)) {
+            return true;
+          }
+        }
+        return false;
+      }
+
+      @Override
+      public int compare(Offer o1, Offer o2) {
+        boolean reserved1 = isReserved(o1);
+        boolean reserved2 = isReserved(o2);
+
+        if (reserved1 == reserved2) {
+          return 0;
+        }
+
+        return reserved1 ? -1 : 1;
+      }
+    });
+
     driverOperationLock.lock();
     try {
       for (Iterator<Offer> iterator = offers.iterator(); iterator.hasNext(); ) {