-
Bug
-
Resolution: Unresolved
-
Major
-
None
RetentionStrategy doesn't really get any stop-the-world consistent view of the world when it makes a decision to terminate the node, and from there to the actual termination of the node, the rest of the world can also change. More specifically, an Executor can go from idle to busy.
This ends up aborting the build that's newly started, as the node is removed and executors interrupted. This isn't a fatal problem, but it's an annoyance.
Because we generally do not restrict how RetentionStrategy makes a decision, we cannot really stop the world for it. But it seems prudent to hold executors still (at least no idle->busy transition) while the check is done — either the core will do so before calling into the check method, or make it easy for RetentionStrategy to do so if it wants.