Skip to content

Commit 497b0c0

Browse files
committed
Decline all remaining offers if encounter expcetion
1 parent e5da84c commit 497b0c0

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

Diff for: hpcframework.py

+22
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
import codecs
33
import logging
44
import threading
5+
import time
56
import uuid
67

78
from mesoshttp.client import MesosClient
89
from mesoshttp.offers import Offer
10+
from typing import List
911

1012
import hpc_cluster_manager
1113
import logging_aux
@@ -101,6 +103,8 @@ def status_update(self, update):
101103
self.logger.info("Update received:\n{}".format(str(update)))
102104

103105
def offer_received(self, offers):
106+
handled_offer = [] # type: List[Offer]
107+
104108
try:
105109
# self.logger.info('OFFER: %s' % (str(offers)))
106110
if self.node_group == "":
@@ -142,13 +146,31 @@ def offer_received(self, offers):
142146
if take_offer:
143147
cores_to_grow -= cpus
144148
self.accept_offer(offer)
149+
handled_offer.append(offer)
145150
else:
146151
self.decline_offer(offer)
152+
handled_offer.append(offer)
147153

148154
except (KeyboardInterrupt, SystemExit):
149155
raise
150156
except Exception as ex:
151157
self.logger.exception(ex)
158+
finally:
159+
# We have to either accept or decline an offer
160+
# TODO: Retry in a separate thread
161+
while True:
162+
try:
163+
if not offers:
164+
return
165+
else:
166+
to_decline = [offer for offer in offers if offer not in handled_offer]
167+
for offer in to_decline:
168+
self.decline_offer(offer)
169+
handled_offer.append(offer)
170+
return
171+
except Exception as ex:
172+
self.logger.exception(ex)
173+
time.sleep(10)
152174

153175
def decline_offer(self, offer):
154176
self.logger.info("Decline offer %s" % offer.get_offer()['id']['value'])

0 commit comments

Comments
 (0)