The TERM signal which is sent by concourse to abort the task (either from the UI, or via cli command) is not being forwarded onto the go process, the assets/out script is terminated, but there is still a running go process, this causes the task not to exit and hang until the lock can be claimed, once it is claimed the task exits with a failure and the lock is deadlocked until intervention.
This PR:
Spawns the go process in the background
Sets up a trap on TERM which will send a TERM to the go process
Waits for the go process
I have tested this and it works with both username/password auth, and with private key auth (the ssh-agents trap is also working and terminating the ssh-agent correctly).
Unlike the screenshots in the mentioned issue you can see this example which terminated correctly when clicking the abort button in concourse
Fixes https://github.com/concourse/pool-resource/issues/70
The TERM signal which is sent by concourse to abort the task (either from the UI, or via cli command) is not being forwarded onto the go process, the assets/out script is terminated, but there is still a running go process, this causes the task not to exit and hang until the lock can be claimed, once it is claimed the task exits with a failure and the lock is deadlocked until intervention.
This PR:
I have tested this and it works with both username/password auth, and with private key auth (the ssh-agents trap is also working and terminating the ssh-agent correctly).
Unlike the screenshots in the mentioned issue you can see this example which terminated correctly when clicking the abort button in concourse