Multiple user-data-done jobs running at the same time will sometimes cause the second job to terminate the host.
When the job returns an error we terminate the host. attachVolume is mostly idempotent so a second job should just mount the volume a second time without erroring. Asking AWS to mount an already mounted volume is an exception because AWS will return an error if the volume is already mounted. We try to continue on error for this case, but it seems AWS sometimes returns a different error string: "VolumeInUse".
Previously we addressed this problem with scopes and now that scopes are fixed that may be a viable solution.