Commit 2e42d0e
committed
fix(manager): surface liveness subscribe failures instead of reporting success
livenessMonitor.Subscribe armed the epoll subscription inside a
syscall.RawConn.Control callback that assigned failures to the function's
named error return -- which the enclosing `err = rawConn.Control(...)`
statement then overwrote with Control's own nil result. A failed
unix.SetNonblock or unix.EpollCtl was therefore logged, "Subscribe daemon
... liveness event" was still printed, and Subscribe returned nil.
The caller then believes the daemon is monitored when it was never added
to the epoll interest list: when that nydusd later dies no death event
fires, so restart/failover recovery never starts and the daemon's
containers are left with dead FUSE mounts -- with nothing in the logs
explaining why. The dialed unix connection also leaked on this path.
Introduce a controlFD helper that returns the first error from either
Control itself or the callback, make Subscribe all-or-nothing (close the
connection and register nothing on failure), and use the same helper in
unsubscribe, where an EPOLL_CTL_DEL failure previously left a stale fd
entry in the interest set that could collide with a future subscription
reusing the same fd number.
Signed-off-by: Iaroslav Geraskin <iaroslav@reflection.ai>1 parent 3285775 commit 2e42d0e
2 files changed
Lines changed: 67 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
| 118 | + | |
118 | 119 | | |
119 | 120 | | |
120 | 121 | | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
126 | 125 | | |
127 | 126 | | |
128 | 127 | | |
129 | 128 | | |
130 | 129 | | |
131 | 130 | | |
132 | 131 | | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
| 132 | + | |
| 133 | + | |
137 | 134 | | |
138 | 135 | | |
139 | 136 | | |
140 | 137 | | |
141 | 138 | | |
142 | 139 | | |
143 | 140 | | |
144 | | - | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
145 | 149 | | |
146 | 150 | | |
147 | 151 | | |
148 | 152 | | |
149 | 153 | | |
150 | 154 | | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
151 | 168 | | |
152 | 169 | | |
153 | 170 | | |
| |||
170 | 187 | | |
171 | 188 | | |
172 | 189 | | |
173 | | - | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
174 | 196 | | |
175 | | - | |
176 | | - | |
| 197 | + | |
177 | 198 | | |
178 | | - | |
| 199 | + | |
179 | 200 | | |
180 | | - | |
| 201 | + | |
181 | 202 | | |
182 | 203 | | |
183 | 204 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
| |||
44 | 45 | | |
45 | 46 | | |
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 | + | |
47 | 78 | | |
48 | 79 | | |
49 | 80 | | |
| |||
0 commit comments