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(); ) {