Skip to content

Commit 30cc719

Browse files
authored
🐛 Fix retire_workers LIFO fallback issue. (#931)
* Fix LIFO retire_workers (all the workers are deleted). * Smaller u test.
1 parent cff5cc2 commit 30cc719

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

dask_kubernetes/operator/controller/controller.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,11 @@ async def retire_workers(
492492
namespace=namespace,
493493
label_selector={"dask.org/workergroup-name": worker_group_name},
494494
)
495-
return [w.name for w in workers[:-n_workers]]
495+
return retire_workers_lifo(workers, n_workers)
496+
497+
498+
def retire_workers_lifo(workers, n_workers: int) -> list[str]:
499+
return [w.name for w in workers[-n_workers:]]
496500

497501

498502
async def check_scheduler_idle(

dask_kubernetes/operator/controller/tests/test_controller.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from dask_kubernetes.operator.controller import (
2828
KUBERNETES_DATETIME_FORMAT,
2929
get_job_runner_pod_name,
30+
retire_workers_lifo,
3031
)
3132

3233
if TYPE_CHECKING:
@@ -877,3 +878,24 @@ async def test_create_cluster_validates_name(
877878
async with gen_cluster(cluster_name=cluster_name) as (_, ns):
878879
actual_status = await _get_cluster_status(k8s_cluster, ns, cluster_name)
879880
assert expected_status == actual_status
881+
882+
883+
@pytest.mark.anyio
884+
async def test_retire_workers_lifo():
885+
class Worker:
886+
def __init__(self, name):
887+
self.name = name
888+
889+
workers = [
890+
Worker(name="worker-1"),
891+
Worker(name="worker-2"),
892+
Worker(name="worker-3"),
893+
Worker(name="worker-4"),
894+
Worker(name="worker-5"),
895+
]
896+
897+
retired_workers = retire_workers_lifo(workers, 2)
898+
899+
# Verify we got back exactly 2 workers and they are the last ones
900+
assert len(retired_workers) == 2
901+
assert retired_workers == ["worker-4", "worker-5"]

0 commit comments

Comments
 (0)