Make 'steal' command atomic (#1144)

Either unschedule all requested tests, or none if it's not possible -
if some of the requested tests have already been processed by the time
the request arrives. It may happen if the worker runs tests faster than
the controller receives and processes status updates. But in this case
maybe it's just better to let the worker keep running.

This is a prerequisite for group/scope support in worksteal scheduler -
so they won't be broken up incorrectly.

This change could break schedulers that use "steal" command. However:

1) worksteal scheduler doesn't need any adjustments.

2) I'm not aware of any external schedulers relying on this command yet.

So I think it's better to keep the protocol simple, not complicate it for
imaginary compatibility with some unknown and likely non-existent
schedulers.

Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
This commit is contained in:
Aleksandr Mezin
2024-10-30 19:00:10 +02:00
committed by GitHub
parent 34c554987a
commit 9788f12e9e
3 changed files with 69 additions and 28 deletions

3
changelog/1144.feature Normal file
View File

@@ -0,0 +1,3 @@
The internal `steal` command is now atomic - it unschedules either all requested tests or none.
This is a prerequisite for group/scope support in the `worksteal` scheduler, so test groups won't be broken up incorrectly.