fix(orchestrator): immich uninstall must disable its sibling app_ids too
orchestrator_uninstall_app_ids("immich") only disabled the "immich" app_id
itself; "immich-postgres" and "immich-redis" (separate orchestrator-tracked
manifests, same pattern as mempool-api/archy-mempool-db) stayed enabled, so
the boot reconciler kept restarting their leftover stopped containers
forever after the generic uninstall path stopped them (.198, 2026-07-01 --
found while uninstalling immich to relieve disk I/O pressure competing with
a slow Bitcoin IBD).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
d0710e7491
commit
09d42cbbf7
@ -1947,6 +1947,17 @@ pub(super) fn orchestrator_uninstall_app_ids(package_id: &str) -> Vec<String> {
|
|||||||
"archy-btcpay-db".into(),
|
"archy-btcpay-db".into(),
|
||||||
],
|
],
|
||||||
"fedimint" => vec!["fedimint".into(), "fedimint-gateway".into()],
|
"fedimint" => vec!["fedimint".into(), "fedimint-gateway".into()],
|
||||||
|
// Immich: multi-container stack, mirrors `immich_stack_app_ids` in
|
||||||
|
// stacks.rs. Without this, uninstalling "immich" only disabled the
|
||||||
|
// orchestrator-tracked "immich" app_id — "immich-postgres" and
|
||||||
|
// "immich-redis" stayed enabled, so the boot reconciler kept
|
||||||
|
// restarting their leftover stopped containers forever after the
|
||||||
|
// generic uninstall path stopped them (`.198`, 2026-07-01).
|
||||||
|
"immich" => vec![
|
||||||
|
"immich-postgres".into(),
|
||||||
|
"immich-redis".into(),
|
||||||
|
"immich".into(),
|
||||||
|
],
|
||||||
_ => vec![package_id.to_string()],
|
_ => vec![package_id.to_string()],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1966,4 +1977,19 @@ mod tests {
|
|||||||
fn runtime_host_ports_preserve_legacy_extra_ports() {
|
fn runtime_host_ports_preserve_legacy_extra_ports() {
|
||||||
assert_eq!(runtime_host_ports("gitea"), vec![3001, 2222, 3000]);
|
assert_eq!(runtime_host_ports("gitea"), vec![3001, 2222, 3000]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn immich_uninstall_covers_every_sibling_orchestrator_app_id() {
|
||||||
|
// Regression: uninstalling "immich" used to only disable the
|
||||||
|
// "immich" app_id itself, leaving immich-postgres/immich-redis
|
||||||
|
// enabled — the boot reconciler kept restarting their leftover
|
||||||
|
// stopped containers forever (.198, 2026-07-01).
|
||||||
|
let ids = orchestrator_uninstall_app_ids("immich");
|
||||||
|
for expected in ["immich-postgres", "immich-redis", "immich"] {
|
||||||
|
assert!(
|
||||||
|
ids.iter().any(|id| id == expected),
|
||||||
|
"missing {expected} in {ids:?}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user