Commit dc2ff5d
Zhangyi Yuan
fix(rust): answer the request id when a handler panics
Requests are dispatched to their own spawned tasks, so a panic inside a handler is isolated by tokio and the request is simply never answered - the caller waits out its own timeout. Catch the unwind at the dispatch boundary and reply with a JSON-RPC internal error (-32603) instead; the panic payload is not exposed.
Also corrects the stop_event_loop, Drop and lifecycle-test documentation, which still claimed in-flight handlers complete before the loop exits. That stopped being true when request dispatch moved to spawned tasks.
Fixes #2053.1 parent 3108e8c commit dc2ff5d
2 files changed
Lines changed: 97 additions & 23 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
| 7 | + | |
6 | 8 | | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
11 | | - | |
| 13 | + | |
12 | 14 | | |
13 | 15 | | |
14 | 16 | | |
| |||
321 | 323 | | |
322 | 324 | | |
323 | 325 | | |
324 | | - | |
325 | | - | |
326 | | - | |
327 | | - | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
328 | 335 | | |
329 | 336 | | |
330 | 337 | | |
| |||
643 | 650 | | |
644 | 651 | | |
645 | 652 | | |
646 | | - | |
647 | | - | |
648 | | - | |
649 | | - | |
650 | | - | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
651 | 658 | | |
652 | 659 | | |
653 | 660 | | |
| |||
1506 | 1513 | | |
1507 | 1514 | | |
1508 | 1515 | | |
| 1516 | + | |
| 1517 | + | |
1509 | 1518 | | |
1510 | 1519 | | |
1511 | 1520 | | |
| |||
1517 | 1526 | | |
1518 | 1527 | | |
1519 | 1528 | | |
1520 | | - | |
| 1529 | + | |
| 1530 | + | |
| 1531 | + | |
| 1532 | + | |
| 1533 | + | |
| 1534 | + | |
| 1535 | + | |
| 1536 | + | |
| 1537 | + | |
| 1538 | + | |
| 1539 | + | |
| 1540 | + | |
| 1541 | + | |
1521 | 1542 | | |
1522 | 1543 | | |
1523 | 1544 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2803 | 2803 | | |
2804 | 2804 | | |
2805 | 2805 | | |
2806 | | - | |
2807 | | - | |
2808 | | - | |
2809 | | - | |
| 2806 | + | |
| 2807 | + | |
| 2808 | + | |
| 2809 | + | |
2810 | 2810 | | |
2811 | 2811 | | |
2812 | 2812 | | |
| |||
2850 | 2850 | | |
2851 | 2851 | | |
2852 | 2852 | | |
2853 | | - | |
2854 | | - | |
2855 | | - | |
2856 | | - | |
| 2853 | + | |
2857 | 2854 | | |
2858 | 2855 | | |
2859 | 2856 | | |
2860 | 2857 | | |
2861 | 2858 | | |
2862 | | - | |
2863 | | - | |
| 2859 | + | |
| 2860 | + | |
2864 | 2861 | | |
2865 | 2862 | | |
2866 | 2863 | | |
2867 | 2864 | | |
2868 | 2865 | | |
2869 | 2866 | | |
2870 | | - | |
2871 | | - | |
2872 | 2867 | | |
2873 | 2868 | | |
2874 | 2869 | | |
2875 | 2870 | | |
2876 | 2871 | | |
2877 | 2872 | | |
| 2873 | + | |
| 2874 | + | |
| 2875 | + | |
| 2876 | + | |
| 2877 | + | |
| 2878 | + | |
| 2879 | + | |
| 2880 | + | |
| 2881 | + | |
| 2882 | + | |
| 2883 | + | |
| 2884 | + | |
| 2885 | + | |
| 2886 | + | |
| 2887 | + | |
| 2888 | + | |
| 2889 | + | |
| 2890 | + | |
| 2891 | + | |
| 2892 | + | |
| 2893 | + | |
| 2894 | + | |
| 2895 | + | |
| 2896 | + | |
| 2897 | + | |
| 2898 | + | |
| 2899 | + | |
| 2900 | + | |
| 2901 | + | |
| 2902 | + | |
| 2903 | + | |
| 2904 | + | |
| 2905 | + | |
| 2906 | + | |
| 2907 | + | |
| 2908 | + | |
| 2909 | + | |
| 2910 | + | |
| 2911 | + | |
| 2912 | + | |
| 2913 | + | |
| 2914 | + | |
| 2915 | + | |
| 2916 | + | |
| 2917 | + | |
| 2918 | + | |
| 2919 | + | |
| 2920 | + | |
| 2921 | + | |
| 2922 | + | |
| 2923 | + | |
| 2924 | + | |
| 2925 | + | |
| 2926 | + | |
| 2927 | + | |
| 2928 | + | |
| 2929 | + | |
| 2930 | + | |
2878 | 2931 | | |
2879 | 2932 | | |
2880 | 2933 | | |
| |||
0 commit comments