Commit f26b07e
committed
phase/uninstall_mke: fall back to forced swarm dissolution on timeout
The uninstall-ucp bootstrapper deploys ucp-uninstall-agent as a global
Swarm service, then waits (~2 min hardcoded) for every node to report
back. On large clusters or hosts with cold image caches this deadline is
missed, causing Reset() to fail.
Observed in CI:
smoke-modern (MKE 3.9.2, 7 nodes): all nodes missed the deadline
smoke-windows (MKE 3.8.8, Win2025): Win2025 missed the deadline
MKE documents the recovery path: remove the stuck ucp-uninstall-agent
service, then force every node to leave the swarm.
pkg/product/mke/phase/uninstall_mke.go:
- Capture Bootstrap output (not just error): the timeout message
'Uninstalling UCP took too long' is logged at error level by MKE and
appears only in the output stream, not in the Bootstrap error value
(which only aggregates fatal-level log lines).
- isUninstallTimeout(output string) detects the timeout from the output.
- dissolveSwarm() removes ucp-uninstall-agent/ucp-uninstall-agent-win
from the leader (best-effort), force-leaves all non-leader nodes in
parallel (per-node failures are warnings), then force-leaves the
leader last (hard failure if this fails).
- Non-timeout uninstall-ucp errors still propagate as hard failures.
pkg/mcr/mcr.go (DrainNode):
- Empty NodeID guard: after forced swarm dissolution every node returns
an empty NodeID from 'docker info'; previously this caused DrainNode
to run 'docker node update --availability drain <empty>' which fails.
Now treated as a no-op (node is already out of the swarm).
- Also removed a pre-existing duplicate drainCmd execution (the command
was being run twice on the happy path).
pkg/product/mke/phase/uninstall_mke_test.go:
- Updated tests to match the new isUninstallTimeout(string) signature.
Signed-off-by: James Nesbitt <jnesbitt@mirantis.com>1 parent c691642 commit f26b07e
3 files changed
Lines changed: 111 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
19 | 21 | | |
20 | 22 | | |
21 | 23 | | |
22 | 24 | | |
23 | 25 | | |
24 | 26 | | |
25 | | - | |
26 | | - | |
27 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
28 | 30 | | |
| 31 | + | |
| 32 | + | |
29 | 33 | | |
30 | | - | |
| 34 | + | |
31 | 35 | | |
32 | 36 | | |
33 | 37 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
36 | | - | |
37 | | - | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
38 | 60 | | |
39 | 61 | | |
40 | 62 | | |
41 | 63 | | |
42 | 64 | | |
43 | | - | |
44 | | - | |
45 | | - | |
| 65 | + | |
| 66 | + | |
46 | 67 | | |
47 | 68 | | |
48 | 69 | | |
| |||
61 | 82 | | |
62 | 83 | | |
63 | 84 | | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
0 commit comments