Repository navigation
Commit a9e69ab
fix(supervisor): keep run notification subscriptions across platform socket reconnects
## Problem
The supervisor subscribes to run notifications over its socket to the
webapp, one subscription per run it drives. On every reconnect, after a
webapp deploy or restart, the webapp forgot those subscriptions and the
supervisor never sent them again. If the webapp turned the handshake
away while it was still starting up, or dropped the socket itself,
socket.io took that as final and the supervisor had no socket at all
until its next restart.
## Impact
Cancels and completed waits reached the affected runs only through the
runner's snapshot poll, every 5 seconds: up to 5 seconds of extra
latency on each wait and cancel. In the worst case, a handshake turned
away during a deploy, that covered every run on the supervisor until it
restarted. Runs were not stuck, lost or run twice. Today's in-image
controllers are affected.
## Fix
The session keeps the set of runs it has subscribed to and sends the
whole set on every connect. Subscribing or unsubscribing while the
socket is down only updates the set; the connect handler sends it, so
nothing is asked twice and an ask made before the socket exists is no
longer dropped. After a refused handshake or a server-side disconnect,
the session reconnects itself after a delay that starts at 1 second and
doubles up to 30 seconds, resetting on connect. Stopping the session
forgets the socket first, so a pending retry cannot revive it.
Before: the supervisor connects and subscribes to runs A and B; the
webapp restarts; the socket reconnects and sends nothing; cancels for A
and B reach their runners only by the poll.
After: the same, except that the reconnect sends the subscriptions for A
and B again and push notifications resume at once.
Mono-RevId: 3e920c637f0bfce37273e0a43987889c142ef3f71 parent 592c9bc commit a9e69ab
3 files changed
Lines changed: 198 additions & 6 deletions
File tree
- .changeset
- apps/supervisor/src
- packages/core/src/v3/runEngineWorker/supervisor
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 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 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 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 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
40 | 43 | | |
41 | 44 | | |
42 | 45 | | |
43 | 46 | | |
44 | 47 | | |
45 | 48 | | |
46 | 49 | | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
47 | 53 | | |
48 | 54 | | |
49 | 55 | | |
| |||
111 | 117 | | |
112 | 118 | | |
113 | 119 | | |
114 | | - | |
115 | | - | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
116 | 126 | | |
117 | 127 | | |
118 | 128 | | |
119 | | - | |
| 129 | + | |
120 | 130 | | |
121 | 131 | | |
122 | 132 | | |
| |||
131 | 141 | | |
132 | 142 | | |
133 | 143 | | |
134 | | - | |
135 | | - | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
136 | 149 | | |
137 | 150 | | |
138 | 151 | | |
| |||
151 | 164 | | |
152 | 165 | | |
153 | 166 | | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
154 | 174 | | |
155 | 175 | | |
156 | 176 | | |
| |||
170 | 190 | | |
171 | 191 | | |
172 | 192 | | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
173 | 200 | | |
174 | 201 | | |
175 | 202 | | |
| 203 | + | |
176 | 204 | | |
177 | 205 | | |
178 | 206 | | |
| 207 | + | |
179 | 208 | | |
180 | 209 | | |
181 | 210 | | |
182 | 211 | | |
183 | 212 | | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
184 | 230 | | |
185 | 231 | | |
186 | 232 | | |
| |||
225 | 271 | | |
226 | 272 | | |
227 | 273 | | |
228 | | - | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
229 | 277 | | |
230 | 278 | | |
231 | 279 | | |
| |||
0 commit comments