[haizea-commit] r782 - branches/1.1/src/haizea/core/scheduler
haizea-commit at mailman.cs.uchicago.edu
haizea-commit at mailman.cs.uchicago.edu
Tue Jan 19 16:59:33 CST 2010
Author: borja
Date: 2010-01-19 16:59:33 -0600 (Tue, 19 Jan 2010)
New Revision: 782
Modified:
branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
Log:
Catch exception from schedule_asap
Modified: branches/1.1/src/haizea/core/scheduler/vm_scheduler.py
===================================================================
--- branches/1.1/src/haizea/core/scheduler/vm_scheduler.py 2010-01-19 21:48:01 UTC (rev 781)
+++ branches/1.1/src/haizea/core/scheduler/vm_scheduler.py 2010-01-19 22:59:33 UTC (rev 782)
@@ -499,9 +499,6 @@
changepoints.sort()
changepoints = [(x, onlynodes) for x in changepoints]
- if lease.deadline != None:
- changepoints = [cp for cp in changepoints if cp[0] <= lease.deadline - duration]
-
# If we can schedule VMs in the future,
# we also consider future changepoints
if allow_in_future:
@@ -522,6 +519,7 @@
futurecp.sort()
if lease.deadline != None:
+ changepoints = [cp for cp in changepoints if cp[0] <= lease.deadline - duration]
futurecp = [cp for cp in futurecp if cp[0] <= lease.deadline - duration]
#
@@ -644,9 +642,12 @@
return vmrr, preemptions
except NotSchedulableException:
self.logger.debug("Lease #%i cannot be scheduled as an advance reservation, trying as best-effort..." % lease.id)
- vmrr, preemptions = self.__schedule_asap(lease, duration, nexttime, earliest, allow_in_future = True, override_state=override_state)
- if vmrr.end - vmrr.start != duration or vmrr.end > lease.deadline or len(preemptions)>0:
+ try:
+ vmrr, preemptions = self.__schedule_asap(lease, duration, nexttime, earliest, allow_in_future = True, override_state=override_state)
+ except NotSchedulableException:
vmrr = None
+ preemptions = []
+ if vmrr == None or vmrr.end - vmrr.start != duration or vmrr.end > lease.deadline or len(preemptions)>0:
self.logger.debug("Lease #%i cannot be scheduled before deadline using best-effort." % lease.id)
#raise NotSchedulableException, "Could not schedule before deadline without making other leases miss deadline"
else:
@@ -706,9 +707,13 @@
self.logger.debug("Rescheduling lease %s" % lease2.id)
dur = lease2.get_remaining_duration_at(l_earliest_time)
-
- vmrr, preemptions = self.__schedule_asap(lease2, dur, nexttime, earliest, allow_in_future = True, override_state=override_state)
- if vmrr.end - vmrr.start != dur or vmrr.end > lease2.deadline or len(preemptions) != 0:
+
+ try:
+ vmrr, preemptions = self.__schedule_asap(lease2, dur, nexttime, earliest, allow_in_future = True, override_state=override_state)
+ except NotSchedulableException:
+ vmrr = None
+ preemptions = []
+ if vmrr == None or vmrr.end - vmrr.start != dur or vmrr.end > lease2.deadline or len(preemptions) != 0:
self.logger.debug("Lease %s could not be rescheduled, undoing changes." % lease2.id)
self.slottable.restore()
@@ -846,8 +851,14 @@
self.logger.debug("Rescheduling lease %s" % l.id)
dur = l.get_remaining_duration_at(l_earliest_time)
- vmrr, preemptions = self.__schedule_asap(l, dur, nexttime, earliest, allow_in_future = True, override_state=override_state)
- if vmrr.end - vmrr.start != dur or vmrr.end > l.deadline or len(preemptions) != 0:
+
+ try:
+ vmrr, preemptions = self.__schedule_asap(l, dur, nexttime, earliest, allow_in_future = True, override_state=override_state)
+ except NotSchedulableException:
+ vmrr = None
+ preemptions = []
+
+ if vmrr == None or vmrr.end - vmrr.start != dur or vmrr.end > l.deadline or len(preemptions) != 0:
raise NotSchedulableException, "Could not schedule before deadline without making other leases miss deadline"
if dirtytime != None:
@@ -867,7 +878,13 @@
def reschedule_deadline(self, lease, duration, nexttime, earliest, override_state = None):
for n in earliest:
earliest[n].time = max(lease.start.requested, earliest[n].time)
- vmrr, preemptions = self.__schedule_asap(lease, duration, nexttime, earliest, allow_in_future = True, override_state=override_state)
+
+ try:
+ vmrr, preemptions = self.__schedule_asap(lease, duration, nexttime, earliest, allow_in_future = True, override_state=override_state)
+ except NotSchedulableException:
+ vmrr = None
+ preemptions = []
+
if vmrr == None or vmrr.end - vmrr.start != duration or vmrr.end > lease.deadline or len(preemptions)>0:
self.logger.debug("Lease #%i cannot be scheduled before deadline using best-effort." % lease.id)
raise NotSchedulableException, "Could not schedule before deadline without making other leases miss deadline"
More information about the Haizea-commit
mailing list