Finally have all the groundwork done for canceling stalled transfers. This involved taking some code that was in the assistant, and had not been touched for probably 7 years beyond basic maintenance, dusting it off, and making it suitable to be used in git-annex more generally. Now I have git-annex using transferkeys child processes, and all that seems to work well.

I'm finishing up today by designing the new git config that will enable stall detection and canceling. annex.stalldetection will be configurable to a value like "1MB/30s", which means it's stalled unless every 30 seconds a megabyte of data has been tranferred. Or "0KiB/2m" will let things stall for up to 2 minutes with no data transfer. There will also be a per-remote config, so minimum transfer rates can be set for each. This can be combined with annex.retry to make it retry after detecting a stall.

Today's work was sponsored by Jake Vosloo on Patreon.