Currently the hold/release commands both work like this:
glob pattern args:
find matching task proxies in the task pool
add/remove their IDs from the tasks-to-hold list
action the hold/release on the matching task proxies
specific task ID args:
add/remove the IDs from tasks-to-hold list
action the hold/release for any of those that exist in the task pool
HOWEVER, we can only release tasks that are already held, so "release" actually only needs to look at the tasks-to-hold list:
glob pattern or specific ID:
find matching IDs in the tasks-to-hold list, and remove them
action the release for any of those that exist in the task pool
NOTE this allows releasing a glob-hold by using the same glob, even if it no longer matches in the task pool - which can be important in partial graph rewind scenarios. [I have a real example, which motivated this Issue].
Currently the hold/release commands both work like this:
HOWEVER, we can only release tasks that are already held, so "release" actually only needs to look at the tasks-to-hold list:
NOTE this allows releasing a glob-hold by using the same glob, even if it no longer matches in the task pool - which can be important in partial graph rewind scenarios. [I have a real example, which motivated this Issue].