Commit 88caa46
Wind down spawned tasks when startup fails
`Node::start` spawns background tasks - wallet sync, RGS gossip,
pathfinding scores - before it can still fail, e.g. when resolving or
binding the configured listening addresses. Until now the error path only
stopped the chain source, leaving those tasks running behind a node that
never came up, and leaving the node in a state a subsequent `start` could
not cleanly recover from.
Extract the wind-down sequence from `Node::stop` into a `Node::shutdown`
helper and run it on any `start_inner` error. As the helper now also runs
after a partial startup, it can no longer assume that every task exists:
the two shutdown `watch::Sender::send` calls are allowed to find no
receivers, and the `debug_assert!`s in `Runtime::wait_on_background_tasks`
and `Runtime::wait_on_background_processor_task` that required a
fully-started node are dropped in favour of doc comments spelling out
that case.
Fixes #1009.
This change was written with the assistance of Claude Code.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUGgjhnpkCuFjsE3BjYAEx1 parent b1337d2 commit 88caa46
3 files changed
Lines changed: 85 additions & 35 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
302 | 302 | | |
303 | 303 | | |
304 | 304 | | |
305 | | - | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
306 | 309 | | |
307 | 310 | | |
308 | 311 | | |
| |||
852 | 855 | | |
853 | 856 | | |
854 | 857 | | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
855 | 872 | | |
856 | 873 | | |
857 | 874 | | |
858 | 875 | | |
859 | 876 | | |
860 | | - | |
861 | | - | |
862 | | - | |
863 | | - | |
864 | | - | |
865 | | - | |
866 | | - | |
867 | | - | |
868 | | - | |
869 | | - | |
870 | | - | |
871 | | - | |
872 | | - | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
873 | 881 | | |
874 | 882 | | |
875 | 883 | | |
| |||
886 | 894 | | |
887 | 895 | | |
888 | 896 | | |
889 | | - | |
890 | | - | |
891 | | - | |
892 | | - | |
893 | | - | |
894 | | - | |
895 | | - | |
896 | | - | |
897 | | - | |
898 | | - | |
899 | | - | |
900 | | - | |
901 | | - | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
902 | 901 | | |
903 | 902 | | |
904 | 903 | | |
905 | 904 | | |
906 | 905 | | |
907 | 906 | | |
908 | | - | |
909 | | - | |
910 | | - | |
911 | | - | |
912 | 907 | | |
913 | 908 | | |
914 | 909 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
202 | 206 | | |
203 | 207 | | |
204 | | - | |
205 | 208 | | |
206 | 209 | | |
207 | 210 | | |
| |||
231 | 234 | | |
232 | 235 | | |
233 | 236 | | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
234 | 241 | | |
235 | 242 | | |
236 | 243 | | |
| |||
265 | 272 | | |
266 | 273 | | |
267 | 274 | | |
268 | | - | |
269 | | - | |
270 | | - | |
| 275 | + | |
271 | 276 | | |
272 | 277 | | |
273 | 278 | | |
| |||
460 | 465 | | |
461 | 466 | | |
462 | 467 | | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
463 | 478 | | |
464 | 479 | | |
465 | 480 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
918 | 918 | | |
919 | 919 | | |
920 | 920 | | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
921 | 961 | | |
922 | 962 | | |
923 | 963 | | |
| |||
0 commit comments