20260924 - Install a fork of the docker-compose Update Module - #60
Merged
Merged
Conversation
Verbatim copy of /usr/share/mender/modules/v3/docker-compose from mender-docker-compose 1.0.0-1+debian+bookworm, sha256 5be40882cbb1ecb5944ffd4a523c4c667fea5660d9f908b1c05754ced04771fd, identical on Josh Test Node and Josh Test Node 2. Nothing installs it yet. Committed on its own so the fork that follows is reviewable as a diff against upstream. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The packaged module stops the running retina-node stack before it loads the new images (147-149 s of radar outage per install on Josh Test Node, and the worst window for a power cut), rolls back into the live stack when an install fails early, and fails a committed deployment over an image already removed. The fork, every change marked FORK: - loads the new images before stopping the running stack (10.7 s outage, measured three times on Josh Test Node 2); - creates new/ before anything can fail, so an early failure is never read as a rollback after a commit, which would stop and move the live stack; - on a failure before the stop, rolls back without touching the live stack; - holds /data/retina-gui/restart.lock, which retina-gui and the RSPduo watchdog already use, so the watchdog cannot restart the stack mid-install (it did, on Josh Test Node 2, before the lock was added); - seeds new/manifests/.env from current/, so tar1090 starts with the node's own location; - skips an image that is already gone during cleanup. owl-os installs it with dpkg-divert, moving the packaged file to /usr/share/mender/docker-compose.upstream (outside modules/v3, where Mender would list it as a module), so apt stays consistent and undo is one dpkg-divert --remove. The artifact type stays docker-compose. tests/update-modules runs the real module under dash against a stub docker and jq with real tar payloads, in a new Tests workflow. Upstream fails 8 of the 15. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
Acceptance evidence, 2026-09-24 (full record: ClickUp 123zgec4tmx, Verification)
Known cost, upstream behaviour: a release whose stack never becomes healthy costs about 2 min 45 s of radar before rollback (the module's 120 s health wait). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 2, item 3 of ClickUp OTA deployments miss part of the fleet on every release (123zgec4tmx). Draft until the acceptance evidence is complete; the full record lives in the ticket's Verification section.
Review commit by commit: 4462353 vendors upstream
mender-docker-compose1.0.0-1 byte for byte (sha2565be40882...); 6bd2637 is the fork, so its diff is exactly our change (every hunk markedFORK:).What the fork changes
new/created before anything can faildownfromnew/, stopping the live stack (shared project name)/data/retina-gui/restart.lockfor install and rollback.env, so tar1090 gets 0,0 and adsb.lol off.envfromcurrent/Install
Two tasks in
roles/mender:dpkg-divertmoves the packaged file to/usr/share/mender/docker-compose.upstream(outsidemodules/v3), then the fork is copied in, 0755. Undo isdpkg-divert --rename --remove. The artifact type staysdocker-compose.Tests
tests/update-modules/runs the real module under dash with a stub docker and jq and real tar payloads; newTestsworkflow runs it. 15 pass. Upstream fails 8; the first fork revision fails the 3 that caught its own regressions (watchdog race, destructive early-failure rollback).Evidence on test nodes so far
.envseeded; watchdog run by hand mid-load printedA stack restart is already in flight - skipping this check.leaving it running, deploymentfailureand retryable.Stopping previous:retina-node.serviceskipped, rollback restoredpreviousand started it, deploymentfailureand retryable.Still to prove before this leaves draft
Install whose new stack fails to start; node that skipped a release; normal upgrade on Josh Test Node (with RSPduo, radar health); this packaging through an
os-v*-devbuild.🤖 Generated with Claude Code