Update question: are downloads cached?

I have a question about updates.

This morning I tried to update to HA 11.3 (I have HAOS on a RPi3).

This happened:

11:01:26.733 INFO [supervisor.homeassistant.core] Updating Home Assistant to version 2025.11.3
11:01:26.737 INFO [supervisor.docker.interface] Updating image ghcr.io/home-assistant/raspberrypi3-homeassistant:2025.11.2 to ghcr.io/home-assistant/raspberrypi3-homeassistant:2025.11.3
11:01:26.738 INFO [supervisor.docker.interface] Downloading docker image ghcr.io/home-assistant/raspberrypi3-homeassistant with tag 2025.11.3.
11:16:40.959 ERROR (MainThread) [supervisor.jobs] Unhandled exception: 
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/aiohttp/streams.py", line 355, in _wait
    await waiter
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/jobs/decorator.py", line 299, in wrapper
    return await method(obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/supervisor/supervisor/docker/interface.py", line 425, in install
    docker_image = await self.sys_docker.pull_image(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<4 lines>...
    )
    ^
  File "/usr/src/supervisor/supervisor/docker/manager.py", line 440, in pull_image
    async for e in self.images.pull(
    ...<7 lines>...
        )
  File "/usr/local/lib/python3.13/site-packages/aiodocker/images.py", line 145, in _handle_stream
    async for item in json_stream_stream(response):
        yield item
  File "/usr/local/lib/python3.13/site-packages/aiodocker/jsonstream.py", line 25, in __anext__
    data = yield from self._response.content.readline()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/streams.py", line 360, in readline
    return await self.readuntil()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/streams.py", line 394, in readuntil
    await self._wait("readuntil")
  File "/usr/local/lib/python3.13/site-packages/aiohttp/streams.py", line 354, in _wait
    with self._timer:
         ^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/helpers.py", line 713, in __exit__
    raise asyncio.TimeoutError from exc_val
TimeoutError
11:16:40.084 WARNING [supervisor.jobs] Removing incomplete job Pulling container image layer from job manager

I have a 1 Gbit broadband connection, so download time shouldn’t be a problem. I guess after 15 minutes the download job timed out for whatever reason.

Now. Usually the whole update takes about 50 minutes (see the log here for the .1->.2 update, a week ago):

06:25:22.781 INFO [supervisor.homeassistant.core] Updating Home Assistant to version 2025.11.2
06:25:22.784 INFO [supervisor.docker.interface] Updating image ghcr.io/home-assistant/raspberrypi3-homeassistant:2025.11.1 to ghcr.io/home-assistant/raspberrypi3-homeassistant:2025.11.2
06:25:22.786 INFO [supervisor.docker.interface] Downloading docker image ghcr.io/home-assistant/raspberrypi3-homeassistant with tag 2025.11.2.
07:11:13.770 INFO [supervisor.docker.manager] Stopping homeassistant application
07:12:10.523 INFO [supervisor.docker.manager] Cleaning homeassistant application
07:12:20.647 INFO [supervisor.docker.homeassistant] Starting Home Assistant ghcr.io/home-assistant/raspberrypi3-homeassistant with version 2025.11.2
07:14:45.752 INFO [supervisor.homeassistant.core] Detect a running Home Assistant instance
07:14:45.753 INFO [supervisor.homeassistant.core] Successfully started Home Assistant 2025.11.2
07:14:47.757 INFO [supervisor.docker.manager] Cleanup images: ['ghcr.io/home-assistant/raspberrypi3-homeassistant:2025.11.1']

This afternoon (after the previous failed attempt) I expected the update to take the same time (50 minutes or so). Instead it was very fast (under 5 minutes, 10 time less than usual):

15:49:23.307 INFO [supervisor.homeassistant.core] Updating Home Assistant to version 2025.11.3
15:49:23.308 INFO [supervisor.docker.interface] Updating image ghcr.io/home-assistant/raspberrypi3-homeassistant:2025.11.2 to ghcr.io/home-assistant/raspberrypi3-homeassistant:2025.11.3
15:49:23.310 INFO [supervisor.docker.interface] Downloading docker image ghcr.io/home-assistant/raspberrypi3-homeassistant with tag 2025.11.3.
15:49:25.610 INFO [supervisor.docker.manager] Stopping homeassistant application
15:50:03.118 INFO [supervisor.docker.manager] Cleaning homeassistant application
15:50:09.032 INFO [supervisor.docker.homeassistant] Starting Home Assistant ghcr.io/home-assistant/raspberrypi3-homeassistant with version 2025.11.3
15:52:56.028 INFO [supervisor.homeassistant.core] Detect a running Home Assistant instance
15:52:56.029 INFO [supervisor.homeassistant.core] Successfully started Home Assistant 2025.11.3
15:52:57.180 INFO [supervisor.docker.manager] Cleanup images: ['ghcr.io/home-assistant/raspberrypi3-homeassistant:2025.11.2']

So my questions are:

  • Are docker download cached? For how long? I remember other instances in which the update failed and it still took about 50 minutes when I tried again.
  • If they are cached: is what happened that docker used the already downloaded package and just applied it?
  • If so: why does it usually take 50 minutes? I always assumed it was part of the update process, not the download time. As said I have a 1 Gbps broadband connection, it shouldn’t take more than 1 minute (tops) to download the package.

Can somebody help me out? I’m left with the doubt that either something nefarious happened (for whatever reason) or that (even thou everything seems to be working) it didn’t really apply the update properly.

Thanks.

EDIT: a bunch of typos. :-/

RPi3 is no longer supported.

1 Like

RPI3 or RPI 3b? Its not recommended anyway.

1 Like

It is. 32-bit system were deprecated back in June, and support is going to end starting December.
RPi3 64 bit systems are supported, and 2025.11 still supports 32 bit installations anyways.

Thanks for replying. RPi 3 Model B, the first Pi3. Do you have any insights regarding the questions I asked?

Hello quaqo,

You probably ran out of drive space.
Downloads are only cached to the point that they download into the /tmp folder and hang around until the process completes or you reboot. In your case the process might have run out of memory, started using swap file and crashed somewhere along the line.

Seriously, you either have to run a very limited install, like one or 2 add-ons at most and a small database or get a supported computer. These kind of crashes will keep happening on a pi3

Hello @Sir_Goodenough !

I did not. I have 10+ GB of free space.

It could be. I’m not much focused on why it timed out. I do not really care, it’s not something that usually happens. And when I re-launched a few hours later (when I realised) it worked.

I only have 2 custom developed addons, zigbee2mqtt with a very small zigbee network, less than 50 automations and <100 devices and sensors. The CPU is constantly below 4% (apart from the seldom spike or during updates) and the free memory is alwasy more than half.

Everything is very smooth and I’ve been using it for 7+ years.

More sophisticated tasks are delegated to other servers on the home network, that only do one thing and do it well.

I don’t experience crashes in general. There was this time out error during an update, but my focus is not on the timeout. More so on the why the subsequent update that was manually initiated hours later was so fricking fast:

If -as you said- downloads are only cached untill that job ends (and that job failed and ended) the update in the afternoon (when relaunched) should have taken more than 3-5 minutes. That’s what I’m trying to understand: why it took so little time. And if it is because somehow the download got cached, why does it usually take 50 minutes, not 5. As the download shouldn’t be the main issue (the Pi3 is limited by its network interface, but it still saturates it during tests).

Thanks!