Logging the stages of the fetch protocol is added to get some insight
of how far a fetch gets, while also providing some simple timings
using Instant::elapsed.
This allowed me to run a local client version of this fetch protocol and see what was happening. The 9s timeout was hit for the channel methods. So this was increased to 30s.
From there, I was able to see that a rad clone of an offending
repository was actually “finishing” but the final error would say that
the other side had disconnected. This lead to the realisation that the
call to done can be a fire and forget – log the error and continue
on with validation and refdb updates. I was then able to confirm that
the clone of the offending repository was able to be performed.
Logging the stages of the fetch protocol is added to get some insight
of how far a fetch gets, while also providing some simple timings
using Instant::elapsed.
This allowed me to run a local client version of this fetch protocol and see what was happening. The 9s timeout was hit for the channel methods. So this was increased to 30s.
From there, I was able to see that a rad clone of an offending
repository was actually “finishing” but the final error would say that
the other side had disconnected. This lead to the realisation that the
call to done can be a fire and forget – log the error and continue
on with validation and refdb updates. I was then able to confirm that
the clone of the offending repository was able to be performed.
Changes:
- Change timings from seconds to milliseconds
- Downgrade noisy debug logs to trace
Rebase, fix logs.
Fix commit authorship.