82f80ef8

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Let a worker put a result a failed resource already put

A resource that fails before its tests gives them results, because the
thread collecting them waits on every one.  Scheduling can stop part-way
through a group, though, and the jobs already on the queue still run, so
a worker could reach a var that had been filled on its behalf and block
on it.  That is a worker counted as working forever, which is the hang
this mechanism exists to avoid.

tryPutMVar, and the result already there wins: it says the resource this
test needed failed, which is more use than what the test made of a
resource it did not have.

No regression test: the window is between a job being queued and a
worker reaching it, and I could not close on it deterministically
without adding hooks to the runner.
GitHub

Total

17m09s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 17h53m52s 0s 0s 17h53m53s 17h53m52s
Eval 18h09m00s 2m01s 2m02s 18h11m02s 16m08s
Build - - - - -
Suite 17h53m52s 2m02s 17m09s 18h11m02s 18h10m00s

Timeline

Config Eval Failed Retried Compressed gap
0s18h9m18h9m18h9m18h9m18h9m18h10m18h10m18h10m18h10m18h10m18h10m18h11m