Commit 07c709a
SqlRush
feat(cluster): crash-rejoin boot barrier + off-path rejoin tick (Shape A checkpoint)
Closes the fail-OPEN crash-rejoin hole for the SLOW-rejoin case and the
boot-to-decision race; the FAST-rejoin-within-deadband residual needs a
formation-level signal (escalated, NOT claimed done).
Mechanism (fail-closed, off path only; online_join=on untouched):
- New per-incarnation shmem flag ClusterGrdShared.offpath_boot_decided
(init 0). The phase gate (cluster_gcs_block.c) fences a self-home
block RECOVERING while the flag is 0, so from process start every
backend fail-closes self-home reads AND writes (both reach the gate
via cluster_pcm_lock_acquire_buffer) — zero cold-serve window.
- cluster_reconfig_offpath_rejoin_tick(): the online_join=off counterpart
of the joiner self-tick. already_running -> arm self-fence({self})
then demote self_join_admitted to 0 (8.A: never raised to 1 before the
fence is armed); bootstrap-at-initial or single node -> lift the barrier.
Measured (scratchpad bounce-read-p0/rejoin-state-measured.log):
- SLOW rejoin (survivor advanced epoch first): tick detects
already_running, arms the fence, self demotes to JOINING. WORKS.
- FAST rejoin (node restarts within the survivor dead-deadband, survivor
still at epoch INITIAL): already_running is false and
bootstrap_quorum_at_initial cannot distinguish a co-boot from a
long-running-but-not-yet-reconfigured peer -> mis-lifts -> t/404 L4/L5
still RED. This gap is pre-existing and affects online_join=on too
(existing tests only do slow rejoins). The durable prior-self-epoch
signal is erased by qvotec_poll_once (writes self slot before reading,
cluster_qvotec.c:578) — robust closure is a formation-level change.
Spec: spec-5.16 (extended to online_join=off crash-rejoin).1 parent 21f3f6a commit 07c709a
5 files changed
Lines changed: 197 additions & 1 deletion
File tree
- src
- backend/cluster
- include/cluster
- test/cluster_tap/t
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1450 | 1450 | | |
1451 | 1451 | | |
1452 | 1452 | | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
| 1463 | + | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
1453 | 1475 | | |
1454 | 1476 | | |
1455 | 1477 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
763 | 763 | | |
764 | 764 | | |
765 | 765 | | |
| 766 | + | |
| 767 | + | |
766 | 768 | | |
767 | 769 | | |
768 | 770 | | |
| |||
1799 | 1801 | | |
1800 | 1802 | | |
1801 | 1803 | | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| 1833 | + | |
1802 | 1834 | | |
1803 | 1835 | | |
1804 | 1836 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2136 | 2136 | | |
2137 | 2137 | | |
2138 | 2138 | | |
| 2139 | + | |
| 2140 | + | |
| 2141 | + | |
| 2142 | + | |
| 2143 | + | |
| 2144 | + | |
| 2145 | + | |
| 2146 | + | |
| 2147 | + | |
| 2148 | + | |
| 2149 | + | |
| 2150 | + | |
| 2151 | + | |
| 2152 | + | |
| 2153 | + | |
| 2154 | + | |
| 2155 | + | |
| 2156 | + | |
| 2157 | + | |
| 2158 | + | |
| 2159 | + | |
| 2160 | + | |
| 2161 | + | |
| 2162 | + | |
| 2163 | + | |
| 2164 | + | |
| 2165 | + | |
| 2166 | + | |
| 2167 | + | |
| 2168 | + | |
| 2169 | + | |
| 2170 | + | |
| 2171 | + | |
| 2172 | + | |
| 2173 | + | |
| 2174 | + | |
| 2175 | + | |
| 2176 | + | |
| 2177 | + | |
| 2178 | + | |
| 2179 | + | |
| 2180 | + | |
| 2181 | + | |
| 2182 | + | |
| 2183 | + | |
| 2184 | + | |
| 2185 | + | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
| 2189 | + | |
| 2190 | + | |
| 2191 | + | |
| 2192 | + | |
| 2193 | + | |
| 2194 | + | |
| 2195 | + | |
| 2196 | + | |
| 2197 | + | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
| 2205 | + | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
| 2216 | + | |
| 2217 | + | |
| 2218 | + | |
| 2219 | + | |
| 2220 | + | |
| 2221 | + | |
| 2222 | + | |
| 2223 | + | |
| 2224 | + | |
| 2225 | + | |
| 2226 | + | |
| 2227 | + | |
| 2228 | + | |
2139 | 2229 | | |
2140 | 2230 | | |
2141 | 2231 | | |
| |||
2208 | 2298 | | |
2209 | 2299 | | |
2210 | 2300 | | |
| 2301 | + | |
| 2302 | + | |
| 2303 | + | |
| 2304 | + | |
| 2305 | + | |
| 2306 | + | |
| 2307 | + | |
| 2308 | + | |
2211 | 2309 | | |
2212 | 2310 | | |
2213 | 2311 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
398 | 398 | | |
399 | 399 | | |
400 | 400 | | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
401 | 414 | | |
402 | 415 | | |
403 | 416 | | |
| |||
669 | 682 | | |
670 | 683 | | |
671 | 684 | | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
672 | 688 | | |
673 | 689 | | |
674 | 690 | | |
| |||
Lines changed: 29 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
162 | 162 | | |
163 | 163 | | |
164 | 164 | | |
165 | | - | |
| 165 | + | |
166 | 166 | | |
167 | 167 | | |
168 | 168 | | |
| |||
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
190 | 218 | | |
191 | 219 | | |
192 | 220 | | |
| |||
0 commit comments