Avoiding fetchurl restarts

Christian Helmuth christian.helmuth at genode-labs.com
Mon Apr 17 08:22:15 CEST 2023


Hello Nicolai,

On Wed, Apr 12, 2023 at 09:05:21 CEST, Timo Nicolai wrote:
> I have noticed that at least when running on Linux, the fetchurl
> component started by depot_download_manager will always restart
> immediately after it is first executed (before anything has been
> downloaded). After that the download proceeds as normal.
> 
> This is because Fetchurl_watchdog uses trigger_periodic to trigger
> the timer handler which checks the current download progress. As a
> consequence, this handler /might/ be called immediately, before
> fetchurl has had the chance to do any work.

Your investigation nails it: the first periodic timeout triggers
(almost) immediately. I stumbled upon this undocumented behavior of
periodic timeouts in a different context myself recently [1].

> I believe this is a bug, but one that might not manifest on all
> platforms due to the uncertain timing introduced by
> trigger_periodic.
> 
> I have attached a potential patch, if this sounds okay to you I will
> open an Issue on GitHub.

AFAICS your patch fixes the issue for fetchurl. Nevertheless, I favor
the use of periodic timeouts in proper contexts over oneshot timeouts.
How about keeping the periodic timeout and handling the _initial_ state
in Fetchurl_watchdog::_handle()? 

[1] https://github.com/genodelabs/genode/commit/7feea78991285c6c3b3c0f83659b80c62be0de77#r107606621

Regards
-- 
Christian Helmuth
Genode Labs

https://www.genode-labs.com/ · https://genode.org/
https://twitter.com/GenodeLabs · https://genodians.org/

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth



More information about the users mailing list