Skip to content

Commit 4c220d6

Browse files
committed
(untested) Always supply the frontend with the worker's disconnect_delay.
1 parent 6302231 commit 4c220d6

File tree

4 files changed

+42
-30
lines changed

4 files changed

+42
-30
lines changed

luigi/scheduler.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -358,9 +358,15 @@ def __init__(self, worker_id, last_active=None):
358358
def add_info(self, info):
359359
self.info.update(info)
360360

361-
def set_custom_disconnect_delay(self, delay):
361+
def set_disconnect_delay(self, delay):
362362
self.custom_disconnect_delay = delay
363363

364+
def disconnect_delay(self, scheduler_config):
365+
if self.custom_disconnect_delay is None:
366+
return scheduler_config.worker_disconnect_delay
367+
else
368+
return self.custom_disconnect_delay
369+
364370
def update(self, worker_reference, get_work=False):
365371
if worker_reference:
366372
self.reference = worker_reference
@@ -370,12 +376,9 @@ def update(self, worker_reference, get_work=False):
370376

371377
def prune(self, config):
372378
# Delete workers that haven't said anything for a while (probably killed)
373-
if self.custom_disconnect_delay:
374-
disconnect_delay = self.custom_disconnect_delay
375-
else:
376-
disconnect_delay = config.worker_disconnect_delay
379+
disconnect_delay = self.disconnect_delay(config)
377380
if self.last_active + disconnect_delay < time.time():
378-
logger.debug("Worker %s timed out (no contact for >=%ss)", self, disconnect_delay)
381+
logger.debug("Worker {self} timed out (no contact for >={disconnect_delay}s)")
379382
return True
380383

381384
def get_tasks(self, state, *statuses):
@@ -972,8 +975,8 @@ def set_worker_processes(self, worker, n):
972975
self._state.get_worker(worker).add_rpc_message('set_worker_processes', n=n)
973976

974977
@rpc_method()
975-
def set_worker_custom_disconnect_delay(self, worker, n):
976-
self._state.get_worker(worker).set_custom_disconnect_delay(n)
978+
def set_worker_disconnect_delay(self, worker, n):
979+
self._state.get_worker(worker).set_disconnect_delay(n)
977980

978981
@rpc_method()
979982
def send_scheduler_message(self, worker, task, content):
@@ -1185,7 +1188,7 @@ def get_work(self, host=None, assistant=False, current_tasks=None, worker=None,
11851188
else:
11861189
relevant_tasks = self._state.get_active_tasks_by_status(PENDING, RUNNING)
11871190
used_resources = self._used_resources()
1188-
activity_limit = time.time() - self._config.worker_disconnect_delay
1191+
activity_limit = time.time() - self._config.worker_disconnect_delay # note that a worker can have a custom disconnect delay, this would not be factored in here. But i don't understand the logic below and i'm not sure what exactly is accomplished by checking *last_get_work* against disconnect delay.
11891192
active_workers = self._state.get_active_workers(last_get_work_gt=activity_limit)
11901193
greedy_workers = dict((worker.id, worker.info.get('workers', 1))
11911194
for worker in active_workers)
@@ -1483,7 +1486,7 @@ def worker_list(self, include_running=True, **kwargs):
14831486
state=worker.state,
14841487
first_task_display_name=self._first_task_display_name(worker),
14851488
num_unread_rpc_messages=len(worker.rpc_messages),
1486-
custom_disconnect_delay=worker.custom_disconnect_delay,
1489+
disconnect_delay=worker.disconnect_delay(self._config),
14871490
**worker.info
14881491
) for worker in self._state.get_active_workers()]
14891492
workers.sort(key=lambda worker: worker['started'], reverse=True)

luigi/static/visualiser/index.html

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,19 +169,22 @@ <h4 class="modal-title" id="disiableWorkerLabel">Disable worker?</h4>
169169
<h3 class="box-title">{{name}}</h3>
170170
<div class="pull-right">
171171
<span class="btn-group">
172-
<button type="button" class="btn btn-sm btn-default dropdown-toggle btn-set-worker-custom-disconnect-delay" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
173-
Custom disconnect delay: <span id="label-custom-disconnect-delay" data-worker="{{name}}">{{custom_disconnect_delay}}</span> <span class="caret"></span>
172+
<button type="button" class="btn btn-sm btn-default dropdown-toggle btn-set-worker-disconnect-delay" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
173+
Disconnect delay: <span id="label-disconnect-delay" data-worker="{{name}}">{{disconnect_delay}}</span> <span class="caret"></span>
174174
</button>
175175
<ul class="dropdown-menu">
176-
<li><a href="#" id="btn-set-worker-custom-disconnect-delay-no" data-worker="{{name}}">
177-
no
178-
</a></li>
179-
<li><a href="#" id="btn-set-worker-custom-disconnect-delay-60" data-worker="{{name}}">
176+
<li><a href="#" id="btn-set-worker-disconnect-delay-60s" data-worker="{{name}}">
180177
60s
181178
</a></li>
182-
<li><a href="#" id="btn-set-worker-custom-disconnect-delay-3600" data-worker="{{name}}">
179+
<li><a href="#" id="btn-set-worker-disconnect-delay-3600s" data-worker="{{name}}">
183180
3600s
184181
</a></li>
182+
<li><a href="#" id="btn-set-worker-disconnect-delay-86400s" data-worker="{{name}}">
183+
86400s
184+
</a></li>
185+
<li><a href="#" id="btn-set-worker-disconnect-delay-31536000s" data-worker="{{name}}">
186+
31536000s
187+
</a></li>
185188
</ul>
186189
</span>
187190
<span class="box-tools">

luigi/static/visualiser/js/luigi.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,9 @@ var LuigiAPI = (function() {
164164
});
165165
};
166166

167-
LuigiAPI.prototype.setWorkerCustomDisconnectDelay = function(workerId, n, callback) {
167+
LuigiAPI.prototype.setWorkerDisconnectDelay = function(workerId, n, callback) {
168168
var data = {worker: workerId, n: n};
169-
jsonRPC(this.urlRoot + "/set_worker_custom_disconnect_delay", data, function(response) {
169+
jsonRPC(this.urlRoot + "/set_worker_disconnect_delay", data, function(response) {
170170
callback();
171171
});
172172
};

luigi/static/visualiser/js/visualiserApp.js

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,16 +1042,16 @@ function visualiserApp(luigi) {
10421042
}
10431043

10441044
/**
1045-
* Updates the custom disconnect delay of a worker
1045+
* Updates the disconnect delay of a worker
10461046
* @param worker: the id of the worker
1047-
* @param n: delay, in seconds
1047+
* @param n: disconnect delay, in seconds
10481048
*/
1049-
function updateWorkerCustomDisconnectDelay(worker, n) {
1049+
function updateWorkerDisconnectDelay(worker, n) {
10501050
// the spinner is just for visual feedback
1051-
var $label = $('#workerList').find('#label-custom-disconnect-delay[data-worker="' + worker + '"]');
1051+
var $label = $('#workerList').find('#label-disconnect-delay[data-worker="' + worker + '"]');
10521052
$label.html('<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>');
10531053

1054-
luigi.setWorkerCustomDisconnectDelay(worker, n, function() {
1054+
luigi.setWorkerDisconnectDelay(worker, n, function() {
10551055
$label.text(n);
10561056
});
10571057
}
@@ -1443,21 +1443,27 @@ function visualiserApp(luigi) {
14431443
$event.preventDefault();
14441444
});
14451445

1446-
$('#workerList').on('click', '#btn-set-worker-custom-disconnect-delay-no', function($event) {
1446+
$('#workerList').on('click', '#btn-set-worker-disconnect-delay-60s', function($event) {
14471447
var worker = $(this).data("worker");
1448-
updateWorkerCustomDisconnectDelay(worker, null);
1448+
updateWorkerDisconnectDelay(worker, 60);
14491449
$event.preventDefault();
14501450
});
14511451

1452-
$('#workerList').on('click', '#btn-set-worker-custom-disconnect-delay-60', function($event) {
1452+
$('#workerList').on('click', '#btn-set-worker-disconnect-delay-3600s', function($event) {
14531453
var worker = $(this).data("worker");
1454-
updateWorkerCustomDisconnectDelay(worker, 60);
1454+
updateWorkerDisconnectDelay(worker, 3600);
14551455
$event.preventDefault();
14561456
});
14571457

1458-
$('#workerList').on('click', '#btn-set-worker-custom-disconnect-delay-3600', function($event) {
1458+
$('#workerList').on('click', '#btn-set-worker-disconnect-delay-86400s', function($event) {
14591459
var worker = $(this).data("worker");
1460-
updateWorkerCustomDisconnectDelay(worker, 3600);
1460+
updateWorkerDisconnectDelay(worker, 86400);
1461+
$event.preventDefault();
1462+
});
1463+
1464+
$('#workerList').on('click', '#btn-set-worker-disconnect-delay-31536000s', function($event) {
1465+
var worker = $(this).data("worker");
1466+
updateWorkerDisconnectDelay(worker, 31536000);
14611467
$event.preventDefault();
14621468
});
14631469

0 commit comments

Comments
 (0)