i’ve been trying to investigate a flaky CI test that sporadically fails because of ioOnClosedChannel. it is difficult to reproduce locally, and i’ve only been able to reproduce the failure by artificially limiting the CPU percentage available to the mock servers to a very low percentage, like 3%, to simulate a GitHub Actions runner under high contention.
but i have been unable to make much progress investigating the issue because i have no idea how to log why a channel was closed in the first place! i thought perhaps the failure(_:) case of the closeFuture result might contain useful information. but the closeFuture always reports “success”. so i do not know if there is faulty logic on my end and i am somehow checking-out bad connections on the client side, or if the server is just hanging up on its own due to low resources.
how to i detect which side a channel was closed from?