Summary
When a container image is updated outside the Docker tab (for example via the Docker API by another tool), the Docker tab keeps showing "update available" indefinitely, and even a manual "Check for Updates" does not clear it.
Root cause
DockerUpdate::reloadUpdateStatus($image) in plugins/dynamix.docker.manager/include/DockerClient.php reads the cached local digest from /var/lib/docker/unraid-update-status.json first and only re-inspects the image when that cache entry is null. Once the tag has moved to a new digest, the cache still holds the old digest, so the status is never recomputed and the flag stays set. Seen on 7.0.1.
Steps to reproduce
- Install any container via the Docker tab.
- Update its image to a newer digest through the Docker API (not via the Docker tab).
- The Docker tab still shows "update available"; "Check for Updates" does not clear it.
Suggested fix
In reloadUpdateStatus, re-inspect the image when the local image digest differs from the cached one (or drop the cached entry before recompute) instead of trusting a non-null cache. In practice, unsetting the container's entry and then calling reloadUpdateStatus($image) makes Unraid re-inspect the current image and rewrite the status correctly.
Environment
Unraid 7.0.1 (reproducible whenever a container is updated out of band).
Happy to open a PR if that helps.
Summary
When a container image is updated outside the Docker tab (for example via the Docker API by another tool), the Docker tab keeps showing "update available" indefinitely, and even a manual "Check for Updates" does not clear it.
Root cause
DockerUpdate::reloadUpdateStatus($image)inplugins/dynamix.docker.manager/include/DockerClient.phpreads the cached local digest from/var/lib/docker/unraid-update-status.jsonfirst and only re-inspects the image when that cache entry is null. Once the tag has moved to a new digest, the cache still holds the old digest, so the status is never recomputed and the flag stays set. Seen on 7.0.1.Steps to reproduce
Suggested fix
In
reloadUpdateStatus, re-inspect the image when the local image digest differs from the cached one (or drop the cached entry before recompute) instead of trusting a non-null cache. In practice, unsetting the container's entry and then callingreloadUpdateStatus($image)makes Unraid re-inspect the current image and rewrite the status correctly.Environment
Unraid 7.0.1 (reproducible whenever a container is updated out of band).
Happy to open a PR if that helps.