Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement session recovery #18883

Closed
wants to merge 5 commits into from
Closed

Conversation

kghost
Copy link
Contributor

@kghost kghost commented May 27, 2022

Problem

Fixes #16202 #15766

Change overview

  • Start a new CASE pairing when RMP 3rd try timeout.
    • Use an exponent backoff if CASE pairing fails
  • Start a new CASE pairing as request by applications.
    • Apps can use session->DispatchSessionEvent(&SessionDelegate::OnRequestRecovery) to trigger it
  • While establishing a new CASE session, the old session is kept untouched
  • Once the new session established, shift to the new session

Implemented inside OperationalDeviceProxy state machine, adds 2 state Recovering and RecoveringBackoff

  • Recovering: the CASE pairing object is doing its work
  • RecoveringBackoff: if recover fails, start a timer then give another try.

Note: this PR depends on following PRs

Testing

Passed unit-tests

@github-actions
Copy link

github-actions bot commented May 27, 2022

PR #18883: Size comparison from e7bb258 to afb4aa5

Increases above 0.2%:

platform target config section e7bb258 afb4aa5 change % change
cc13x2_26x2 lock-mtd LP_CC2652R7 .text 532268 533644 1376 0.3
linux bridge-app debug+rpc (read only) 2023745 2027953 4208 0.2
.text 1699490 1703250 3760 0.2
ota-provider-app debug .data.rel.ro 60776 60904 128 0.2
ota-requestor-app debug .data.rel.ro 62872 63000 128 0.2
telink light-switch-app tlsr9518adk80d (read/write) 779400 781620 2220 0.3
text 551116 553156 2040 0.4
lighting-app tlsr9518adk80d (read/write) 799424 801644 2220 0.3
text 567850 569890 2040 0.4
Increases (37 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section e7bb258 afb4aa5 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 644979 645803 824 0.1
.rodata 83747 83859 112 0.1
.text 560996 561708 712 0.1
lock-ftd LP_CC2652R7 (read only) 679295 680759 1464 0.2
.rodata 96055 96159 104 0.1
.text 582756 584116 1360 0.2
lock-mtd LP_CC2652R7 (read only) 628695 630183 1488 0.2
.rodata 95935 96047 112 0.1
.text 532268 533644 1376 0.3
pump-app LP_CC2652R7 (read only) 675715 677179 1464 0.2
.rodata 88531 88635 104 0.1
.text 586700 588060 1360 0.2
pump-controller-app LP_CC2652R7 (read only) 653643 655107 1464 0.2
.rodata 83275 83379 104 0.1
.text 569888 571248 1360 0.2
shell LP_CC2652R7 (read only) 637986 638802 816 0.1
.rodata 80722 80834 112 0.1
.text 557032 557736 704 0.1
cyw30739 light cyw930739m2evb_01 (read/write) 621510 622542 1032 0.2
.app_xip_area 524788 525868 1080 0.2
lock cyw930739m2evb_01 (read/write) 630210 631258 1048 0.2
.app_xip_area 534960 536056 1096 0.2
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 570614 571414 800 0.1
.app_xip_area 465684 466532 848 0.2
efr32 lighting-app BRD4161A (read only) 913936 914912 976 0.1
.text 913928 914904 976 0.1
BRD4161A+rpc (read only) 948108 949100 992 0.1
.text 948100 949092 992 0.1
BRD4161A+rs911x (read only) 788508 790004 1496 0.2
.text 788500 789996 1496 0.2
lock-app BRD4161A+wf200 (read only) 953864 955296 1432 0.2
.text 953856 955288 1432 0.2
window-app BRD4161A (read only) 898880 899856 976 0.1
.text 898872 899848 976 0.1
esp32 all-clusters-app c3devkit (read only) 1002224 1002942 718 0.1
(read/write) 1479314 1479418 104 0.0
.flash.rodata 209840 209960 120 0.1
.flash.text 1002224 1002942 718 0.1
m5stack (read only) 1057135 1057763 628 0.1
(read/write) 481288 481384 96 0.0
.flash.rodata 240172 240276 104 0.0
.flash.text 1051751 1052379 628 0.1
k32w light k32w061+release (read/write) 680744 681552 808 0.1
.text 596608 597424 816 0.1
lock k32w061+release (read/write) 732084 733012 928 0.1
.text 647548 648484 936 0.1
linux all-clusters-app debug (read only) 2751177 2754729 3552 0.1
(read/write) 178240 178368 128 0.1
.data.rel.ro 83560 83704 144 0.2
.rodata 242013 242109 96 0.0
.text 2335570 2338642 3072 0.1
bridge-app debug+rpc (read only) 2023745 2027953 4208 0.2
(read/write) 147896 147992 96 0.1
.data.rel.ro 65272 65400 128 0.2
.rodata 168096 168160 64 0.0
.text 1699490 1703250 3760 0.2
chip-tool debug (read only) 9660005 9661045 1040 0.0
.text 7774261 7775173 912 0.0
chip-tool-no-interactive-ipv6only arm64 (read only) 9402692 9403524 832 0.0
.rodata 456604 456636 32 0.0
.text 7417892 7418596 704 0.0
lighting-app debug+rpc (read only) 2314097 2317953 3856 0.2
(read/write) 153536 153600 64 0.0
.data.rel.ro 70776 70904 128 0.2
.rodata 186760 186856 96 0.1
.text 1961970 1965346 3376 0.2
lock-app debug (read only) 2253241 2257065 3824 0.2
(read/write) 148600 148696 96 0.1
.data.rel.ro 67704 67832 128 0.2
.rodata 200168 200232 64 0.0
.text 1893138 1896514 3376 0.2
ota-provider-app debug (read only) 2066369 2070225 3856 0.2
(read/write) 141360 141456 96 0.1
.data.rel.ro 60776 60904 128 0.2
.rodata 179768 179864 96 0.1
.text 1728034 1731410 3376 0.2
ota-requestor-app debug (read only) 2095585 2099137 3552 0.2
(read/write) 144200 144296 96 0.1
.data.rel.ro 62872 63000 128 0.2
.rodata 175776 175872 96 0.1
.text 1759778 1762850 3072 0.2
shell debug (read only) 2555537 2559089 3552 0.1
(read/write) 201744 201776 32 0.0
.data.rel.ro 77208 77336 128 0.2
.rodata 222194 222290 96 0.0
.text 2174258 2177330 3072 0.1
thermostat-no-ble arm64 (read only) 2359708 2362956 3248 0.1
(read/write) 177377 177441 64 0.0
.data.rel.ro 79872 80000 128 0.2
.rodata 147404 147564 160 0.1
.text 1983344 1986080 2736 0.1
tv-app debug (read only) 2875017 2875913 896 0.0
.data.rel.ro 78120 78136 16 0.0
.text 2470802 2471570 768 0.0
tv-casting-app debug (read only) 5432729 5436697 3968 0.1
(read/write) 226256 226288 32 0.0
.data.rel.ro 138736 138848 112 0.1
.rodata 339264 339392 128 0.0
.text 4734114 4737570 3456 0.1
mbed lock-app CY8CPROTO_062_4343W+release (read/write) 2423816 2424640 824 0.0
.text 1386460 1387284 824 0.1
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1181375 1182171 796 0.1
rodata 152656 152764 108 0.1
text 810288 810988 700 0.1
p6 all-clusters-app default (read/write) 2536592 2537432 840 0.0
.text 1494856 1495696 840 0.1
light-app default (read/write) 2419880 2420936 1056 0.0
.text 1378144 1379200 1056 0.1
lock-app default (read/write) 2437912 2438968 1056 0.0
.text 1396176 1397232 1056 0.1
telink light-switch-app tlsr9518adk80d (read/write) 779400 781620 2220 0.3
text 551116 553156 2040 0.4
lighting-app tlsr9518adk80d (read/write) 799424 801644 2220 0.3
text 567850 569890 2040 0.4
Decreases (37 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section e7bb258 afb4aa5 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read/write) 159144 159136 -8 -0.0
.bss 74828 74820 -8 -0.0
lock-ftd LP_CC2652R7 (read/write) 163776 162304 -1472 -0.9
.bss 72852 72844 -8 -0.0
lock-mtd LP_CC2652R7 (read/write) 145968 145960 -8 -0.0
.bss 68588 68580 -8 -0.0
pump-app LP_CC2652R7 (read/write) 168524 167052 -1472 -0.9
.bss 73252 73244 -8 -0.0
pump-controller-app LP_CC2652R7 (read/write) 190452 188980 -1472 -0.8
.bss 73108 73100 -8 -0.0
shell LP_CC2652R7 (read/write) 154708 154700 -8 -0.0
.bss 77188 77180 -8 -0.0
cyw30739 light cyw930739m2evb_01 .bss 79364 79316 -48 -0.1
lock cyw930739m2evb_01 .bss 77924 77876 -48 -0.1
ota-requestor-no-progress-logging cyw930739m2evb_01 .bss 87284 87236 -48 -0.1
efr32 lighting-app BRD4161A (read/write) 133448 133440 -8 -0.0
.bss 131352 131344 -8 -0.0
BRD4161A+rpc (read/write) 150136 150128 -8 -0.0
.bss 147840 147832 -8 -0.0
BRD4161A+rs911x (read/write) 129712 129704 -8 -0.0
.bss 127612 127604 -8 -0.0
lock-app BRD4161A+wf200 (read/write) 128484 128476 -8 -0.0
.bss 126420 126412 -8 -0.0
window-app BRD4161A (read/write) 133504 133496 -8 -0.0
.bss 131416 131408 -8 -0.0
esp32 all-clusters-app c3devkit .dram0.bss 69400 69392 -8 -0.0
m5stack .dram0.bss 74912 74904 -8 -0.0
k32w light k32w061+release .bss 80424 80416 -8 -0.0
lock k32w061+release .bss 80856 80848 -8 -0.0
linux all-clusters-app debug .bss 86496 86464 -32 -0.0
bridge-app debug+rpc .bss 73120 73088 -32 -0.0
chip-tool debug .data.rel.ro 571264 571256 -8 -0.0
.rodata 492669 492605 -64 -0.0
chip-tool-no-interactive-ipv6only arm64 (read/write) 668801 668785 -16 -0.0
.got 14992 14976 -16 -0.1
lighting-app debug+rpc .bss 74944 74880 -64 -0.1
lock-app debug .bss 73632 73600 -32 -0.0
ota-provider-app debug .bss 73024 72992 -32 -0.0
ota-requestor-app debug .bss 73728 73696 -32 -0.0
shell debug .bss 117416 117320 -96 -0.1
thermostat-no-ble arm64 .bss 88177 88129 -48 -0.1
.got 4768 4760 -8 -0.2
tv-app debug (read/write) 280368 280304 -64 -0.0
.bss 191304 191240 -64 -0.0
.rodata 221728 221664 -64 -0.0
tv-casting-app debug .bss 78888 78824 -64 -0.1
mbed lock-app CY8CPROTO_062_4343W+release .bss 202868 202860 -8 -0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 bss 139532 139524 -8 -0.0
p6 all-clusters-app default .bss 137352 137344 -8 -0.0
light-app default .bss 129688 129680 -8 -0.0
lock-app default .bss 129496 129488 -8 -0.0
telink light-switch-app tlsr9518adk80d bss 70824 70816 -8 -0.0
lighting-app tlsr9518adk80d bss 71076 71068 -8 -0.0
Full report (37 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section e7bb258 afb4aa5 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 644979 645803 824 0.1
(read/write) 159144 159136 -8 -0.0
.bss 74828 74820 -8 -0.0
.data 3400 3400 0 0.0
.rodata 83747 83859 112 0.1
.text 560996 561708 712 0.1
lock-ftd LP_CC2652R7 (read only) 679295 680759 1464 0.2
(read/write) 163776 162304 -1472 -0.9
.bss 72852 72844 -8 -0.0
.data 3264 3264 0 0.0
.rodata 96055 96159 104 0.1
.text 582756 584116 1360 0.2
lock-mtd LP_CC2652R7 (read only) 628695 630183 1488 0.2
(read/write) 145968 145960 -8 -0.0
.bss 68588 68580 -8 -0.0
.data 3264 3264 0 0.0
.rodata 95935 96047 112 0.1
.text 532268 533644 1376 0.3
pump-app LP_CC2652R7 (read only) 675715 677179 1464 0.2
(read/write) 168524 167052 -1472 -0.9
.bss 73252 73244 -8 -0.0
.data 3300 3300 0 0.0
.rodata 88531 88635 104 0.1
.text 586700 588060 1360 0.2
pump-controller-app LP_CC2652R7 (read only) 653643 655107 1464 0.2
(read/write) 190452 188980 -1472 -0.8
.bss 73108 73100 -8 -0.0
.data 3260 3260 0 0.0
.rodata 83275 83379 104 0.1
.text 569888 571248 1360 0.2
shell LP_CC2652R7 (read only) 637986 638802 816 0.1
(read/write) 154708 154700 -8 -0.0
.bss 77188 77180 -8 -0.0
.data 3404 3404 0 0.0
.rodata 80722 80834 112 0.1
.text 557032 557736 704 0.1
cyw30739 light cyw930739m2evb_01 (read/write) 621510 622542 1032 0.2
.app_xip_area 524788 525868 1080 0.2
.bss 79364 79316 -48 -0.1
.data 704 704 0 0.0
.rodata 0 0 0 0.0
.text 0 0 0 0.0
lock cyw930739m2evb_01 (read/write) 630210 631258 1048 0.2
.app_xip_area 534960 536056 1096 0.2
.bss 77924 77876 -48 -0.1
.data 672 672 0 0.0
.rodata 0 0 0 0.0
.text 0 0 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 570614 571414 800 0.1
.app_xip_area 465684 466532 848 0.2
.bss 87284 87236 -48 -0.1
.data 612 612 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read only) 913936 914912 976 0.1
(read/write) 133448 133440 -8 -0.0
.bss 131352 131344 -8 -0.0
.data 2092 2092 0 0.0
.text 913928 914904 976 0.1
BRD4161A+rpc (read only) 948108 949100 992 0.1
(read/write) 150136 150128 -8 -0.0
.bss 147840 147832 -8 -0.0
.data 2296 2296 0 0.0
.text 948100 949092 992 0.1
BRD4161A+rs911x (read only) 788508 790004 1496 0.2
(read/write) 129712 129704 -8 -0.0
.bss 127612 127604 -8 -0.0
.data 2100 2100 0 0.0
.text 788500 789996 1496 0.2
lock-app BRD4161A+wf200 (read only) 953864 955296 1432 0.2
(read/write) 128484 128476 -8 -0.0
.bss 126420 126412 -8 -0.0
.data 2064 2064 0 0.0
.text 953856 955288 1432 0.2
window-app BRD4161A (read only) 898880 899856 976 0.1
(read/write) 133504 133496 -8 -0.0
.bss 131416 131408 -8 -0.0
.data 2088 2088 0 0.0
.text 898872 899848 976 0.1
esp32 all-clusters-app c3devkit (read only) 1002224 1002942 718 0.1
(read/write) 1479314 1479418 104 0.0
.dram0.bss 69400 69392 -8 -0.0
.dram0.data 14640 14640 0 0.0
.flash.rodata 209840 209960 120 0.1
.flash.text 1002224 1002942 718 0.1
.iram0.text 62954 62954 0 0.0
m5stack (read only) 1057135 1057763 628 0.1
(read/write) 481288 481384 96 0.0
.dram0.bss 74912 74904 -8 -0.0
.dram0.data 34208 34208 0 0.0
.flash.rodata 240172 240276 104 0.0
.flash.text 1051751 1052379 628 0.1
.iram0.text 123267 123267 0 0.0
k32w light k32w061+release (read/write) 680744 681552 808 0.1
.bss 80424 80416 -8 -0.0
.data 2008 2008 0 0.0
.text 596608 597424 816 0.1
lock k32w061+release (read/write) 732084 733012 928 0.1
.bss 80856 80848 -8 -0.0
.data 1976 1976 0 0.0
.text 647548 648484 936 0.1
linux all-clusters-app debug (read only) 2751177 2754729 3552 0.1
(read/write) 178240 178368 128 0.1
.bss 86496 86464 -32 -0.0
.data 2032 2032 0 0.0
.data.rel.ro 83560 83704 144 0.2
.dynamic 608 608 0 0.0
.got 4496 4496 0 0.0
.init 27 27 0 0.0
.init_array 1016 1016 0 0.0
.rodata 242013 242109 96 0.0
.text 2335570 2338642 3072 0.1
bridge-app debug+rpc (read only) 2023745 2027953 4208 0.2
(read/write) 147896 147992 96 0.1
.bss 73120 73088 -32 -0.0
.data 3936 3936 0 0.0
.data.rel.ro 65272 65400 128 0.2
.dynamic 592 592 0 0.0
.got 4272 4272 0 0.0
.init 27 27 0 0.0
.init_array 688 688 0 0.0
.rodata 168096 168160 64 0.0
.text 1699490 1703250 3760 0.2
chip-tool debug (read only) 9660005 9661045 1040 0.0
(read/write) 602608 602608 0 0.0
.bss 23936 23936 0 0.0
.data 1120 1120 0 0.0
.data.rel.ro 571264 571256 -8 -0.0
.dynamic 624 624 0 0.0
.got 5008 5008 0 0.0
.init 27 27 0 0.0
.init_array 648 648 0 0.0
.rodata 492669 492605 -64 -0.0
.text 7774261 7775173 912 0.0
chip-tool-no-interactive-ipv6only arm64 (read only) 9402692 9403524 832 0.0
(read/write) 668801 668785 -16 -0.0
.bss 42225 42225 0 0.0
.data 1176 1176 0 0.0
.data.rel.ro 606568 606568 0 0.0
.dynamic 560 560 0 0.0
.got 14992 14976 -16 -0.1
.init 24 24 0 0.0
.init_array 184 184 0 0.0
.rodata 456604 456636 32 0.0
.text 7417892 7418596 704 0.0
lighting-app debug+rpc (read only) 2314097 2317953 3856 0.2
(read/write) 153536 153600 64 0.0
.bss 74944 74880 -64 -0.1
.data 2048 2048 0 0.0
.data.rel.ro 70776 70904 128 0.2
.dynamic 608 608 0 0.0
.got 4344 4344 0 0.0
.init 27 27 0 0.0
.init_array 792 792 0 0.0
.rodata 186760 186856 96 0.1
.text 1961970 1965346 3376 0.2
lock-app debug (read only) 2253241 2257065 3824 0.2
(read/write) 148600 148696 96 0.1
.bss 73632 73600 -32 -0.0
.data 1568 1568 0 0.0
.data.rel.ro 67704 67832 128 0.2
.dynamic 592 592 0 0.0
.got 4336 4336 0 0.0
.init 27 27 0 0.0
.init_array 752 752 0 0.0
.rodata 200168 200232 64 0.0
.text 1893138 1896514 3376 0.2
ota-provider-app debug (read only) 2066369 2070225 3856 0.2
(read/write) 141360 141456 96 0.1
.bss 73024 72992 -32 -0.0
.data 1768 1768 0 0.0
.data.rel.ro 60776 60904 128 0.2
.dynamic 608 608 0 0.0
.got 4504 4504 0 0.0
.init 27 27 0 0.0
.init_array 648 648 0 0.0
.rodata 179768 179864 96 0.1
.text 1728034 1731410 3376 0.2
ota-requestor-app debug (read only) 2095585 2099137 3552 0.2
(read/write) 144200 144296 96 0.1
.bss 73728 73696 -32 -0.0
.data 1960 1960 0 0.0
.data.rel.ro 62872 63000 128 0.2
.dynamic 592 592 0 0.0
.got 4344 4344 0 0.0
.init 27 27 0 0.0
.init_array 672 672 0 0.0
.rodata 175776 175872 96 0.1
.text 1759778 1762850 3072 0.2
shell debug (read only) 2555537 2559089 3552 0.1
(read/write) 201744 201776 32 0.0
.bss 117416 117320 -96 -0.1
.data 1376 1376 0 0.0
.data.rel.ro 77208 77336 128 0.2
.dynamic 608 608 0 0.0
.got 4192 4192 0 0.0
.init 27 27 0 0.0
.init_array 928 928 0 0.0
.rodata 222194 222290 96 0.0
.text 2174258 2177330 3072 0.1
thermostat-no-ble arm64 (read only) 2359708 2362956 3248 0.1
(read/write) 177377 177441 64 0.0
.bss 88177 88129 -48 -0.1
.data 1520 1520 0 0.0
.data.rel.ro 79872 80000 128 0.2
.dynamic 560 560 0 0.0
.got 4768 4760 -8 -0.2
.init 24 24 0 0.0
.init_array 376 376 0 0.0
.rodata 147404 147564 160 0.1
.text 1983344 1986080 2736 0.1
tv-app debug (read only) 2875017 2875913 896 0.0
(read/write) 280368 280304 -64 -0.0
.bss 191304 191240 -64 -0.0
.data 4672 4672 0 0.0
.data.rel.ro 78120 78136 16 0.0
.dynamic 592 592 0 0.0
.got 4728 4728 0 0.0
.init 27 27 0 0.0
.init_array 928 928 0 0.0
.rodata 221728 221664 -64 -0.0
.text 2470802 2471570 768 0.0
tv-casting-app debug (read only) 5432729 5436697 3968 0.1
(read/write) 226256 226288 32 0.0
.bss 78888 78824 -64 -0.1
.data 2400 2400 0 0.0
.data.rel.ro 138736 138848 112 0.1
.dynamic 608 608 0 0.0
.got 4728 4728 0 0.0
.init 27 27 0 0.0
.init_array 864 864 0 0.0
.rodata 339264 339392 128 0.0
.text 4734114 4737570 3456 0.1
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2423816 2424640 824 0.0
.bss 202868 202860 -8 -0.0
.data 5872 5872 0 0.0
.text 1386460 1387284 824 0.1
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1181375 1182171 796 0.1
bss 139532 139524 -8 -0.0
rodata 152656 152764 108 0.1
text 810288 810988 700 0.1
p6 all-clusters-app default (read/write) 2536592 2537432 840 0.0
.bss 137352 137344 -8 -0.0
.data 2800 2800 0 0.0
.text 1494856 1495696 840 0.1
light-app default (read/write) 2419880 2420936 1056 0.0
.bss 129688 129680 -8 -0.0
.data 2600 2600 0 0.0
.text 1378144 1379200 1056 0.1
lock-app default (read/write) 2437912 2438968 1056 0.0
.bss 129496 129488 -8 -0.0
.data 2568 2568 0 0.0
.text 1396176 1397232 1056 0.1
telink light-switch-app tlsr9518adk80d (read/write) 779400 781620 2220 0.3
bss 70824 70816 -8 -0.0
noinit 40416 40416 0 0.0
text 551116 553156 2040 0.4
lighting-app tlsr9518adk80d (read/write) 799424 801644 2220 0.3
bss 71076 71068 -8 -0.0
noinit 40416 40416 0 0.0
text 567850 569890 2040 0.4

Comment on lines +302 to +307
//
// We don't need to reset the state all the way back to NeedsAddress since all that transpired
// was just CASE connection failure. So let's re-use the cached address to re-do CASE again
// if need-be.
//
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ignoring the multicast traffic injected for mDNS and only considering the two peers involved in the session, CASE is the expensive part of the operation and address resolution is relatively cheap. Does it really make sense to undertake a potentially lengthy sequence of retries with a potentially stale address?

Comment on lines 662 to 682
#ifndef CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_INITIAL_MS
#define CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_INITIAL_MS (30 * 1000)
#endif // CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_INITIAL_MS

/**
* @def CHIP_PEER_CONNECTION_TIMEOUT_CHECK_FREQUENCY_MS
* @def CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_MULTIPLIER
*
* @brief How frequent are peer connections checked for timeouts.
* @brief A multiplier which is used to increase exponential backoff timeout.
*/
#ifndef CHIP_PEER_CONNECTION_TIMEOUT_CHECK_FREQUENCY_MS
#define CHIP_PEER_CONNECTION_TIMEOUT_CHECK_FREQUENCY_MS 5000
#endif // CHIP_PEER_CONNECTION_TIMEOUT_CHECK_FREQUENCY_MS
#ifndef CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_MULTIPLIER
#define CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_MULTIPLIER (1.3)
#endif // CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_MULTIPLIER

/**
* @def CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_MAX_MS
*
* @brief Max backoff timeout for session recovery. Default 5 minutes.
*/
#ifndef CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_MAX_MS
#define CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_MAX_MS (5 * 60 * 1000)
#endif // CHIP_CONFIG_SESSION_RECOVERY_BACKOFF_MAX_MS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am concerned about the potentially large stackup of retries at multiple layers here. We already have MRP at the exchange layer for CASE. And here I think we are multiplying that at another layer with session recovery, sometimes without resolution of a new address.

Won't this lead to extremely slow recovery in the case of renumbering?

Copy link
Contributor

@bzbarsky-apple bzbarsky-apple left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please let me know once the other bits of code this is on top of merge so this can be reviewed sanely....

@mrjerryjohns
Copy link
Contributor

mrjerryjohns commented May 30, 2022

So, I'm not super convinced this is something that we need...

The trigger for initiating a session is usually an application intent to initiate some higher-level interaction with a peer (e.g subscribe, or send a command, or do BDX, etc). Consequently, it follows naturally that the re-establishment of a failed session should also fall similarly, on some demonstrated application intent.

In some cases, this happens in the protocol layer. In the IM, we have a built-in retry mechanism for subscriptions that will do exponential back-off, etc. I'm concerned this session recovery construct conflicts with that. The same goes for something like BDX, where the requestor has a built in mechanism for figuring out when/how to initiate another interaction.

This PR seems to assume that upon failure to receive a response from a peer, that there is still continued application interest and intent to interact with that peer. That is certainly not true in many cases (e.g sending a one-off command to turn on a light bulb, or an OTA query to a single provider). This ends up running a machinery that may spin and churn indefinitely attempting to connect to a peer that you in fact, do not want to continue connecting to.

The application and protocol machinery are the best guides for what to do here. Feels like we should leave it to them to figure out when and to whom they want to establish a session perhaps?

@github-actions
Copy link

github-actions bot commented Jun 1, 2022

PR #18883: Size comparison from 8ef608d to afaab2c

Increases (39 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, p6, telink)
platform target config section 8ef608d afaab2c change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 648347 648867 520 0.1
.rodata 84499 84523 24 0.0
.text 563612 564108 496 0.1
all-clusters-minimal-app LP_CC2652R7 (read only) 615179 615707 528 0.1
.rodata 73883 73907 24 0.0
.text 541060 541564 504 0.1
lock-ftd LP_CC2652R7 (read only) 679995 680531 536 0.1
.rodata 96563 96587 24 0.0
.text 582948 583460 512 0.1
lock-mtd LP_CC2652R7 (read only) 629411 629947 536 0.1
.rodata 96451 96475 24 0.0
.text 532468 532980 512 0.1
pump-app LP_CC2652R7 (read only) 676415 676943 528 0.1
.rodata 89039 89063 24 0.0
.text 586892 587396 504 0.1
pump-controller-app LP_CC2652R7 (read only) 654343 654871 528 0.1
.rodata 83767 83791 24 0.0
.text 570096 570600 504 0.1
shell LP_CC2652R7 (read only) 641362 641890 528 0.1
.rodata 81490 81514 24 0.0
.text 559640 560144 504 0.1
cyw30739 light cyw930739m2evb_01 (read/write) 622118 622758 640 0.1
.app_xip_area 525696 526336 640 0.1
lock cyw930739m2evb_01 (read/write) 630826 631466 640 0.1
.app_xip_area 535876 536516 640 0.1
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 570978 571610 632 0.1
.app_xip_area 466100 466732 632 0.1
efr32 lighting-app BRD4161A (read only) 914876 915508 632 0.1
.text 914868 915500 632 0.1
BRD4161A+rpc (read only) 949032 949664 632 0.1
.text 949024 949656 632 0.1
BRD4161A+rs911x (read only) 789736 790384 648 0.1
.text 789728 790376 648 0.1
lock-app BRD4161A+wf200 (read only) 954756 955292 536 0.1
.text 954748 955284 536 0.1
window-app BRD4161A (read only) 899796 900444 648 0.1
.text 899788 900436 648 0.1
esp32 all-clusters-app c3devkit (read only) 1005546 1006170 624 0.1
(read/write) 1480002 1480026 24 0.0
.flash.rodata 210768 210792 24 0.0
.flash.text 1005546 1006170 624 0.1
m5stack (read only) 1060695 1061187 492 0.0
(read/write) 482208 482232 24 0.0
.flash.rodata 241340 241364 24 0.0
.flash.text 1055311 1055803 492 0.0
k32w light k32w061+release (read/write) 680700 681220 520 0.1
.text 596816 597336 520 0.1
lock k32w061+release (read/write) 732692 733212 520 0.1
.text 648408 648928 520 0.1
linux all-clusters-app debug (read only) 2769985 2772801 2816 0.1
(read/write) 178272 178336 64 0.0
.data.rel.ro 83848 83912 64 0.1
.rodata 244381 244477 96 0.0
.text 2351650 2354178 2528 0.1
all-clusters-minimal-app debug (read only) 2647073 2649921 2848 0.1
(read/write) 170304 170368 64 0.0
.data.rel.ro 76728 76792 64 0.1
.rodata 246269 246397 128 0.1
.text 2228242 2230770 2528 0.1
bridge-app debug+rpc (read only) 2030297 2033049 2752 0.1
(read/write) 147896 147960 64 0.0
.data.rel.ro 65496 65560 64 0.1
.rodata 169472 169568 96 0.1
.text 1704306 1706770 2464 0.1
chip-tool debug (read only) 9670285 9673181 2896 0.0
(read/write) 600688 600752 64 0.0
.data.rel.ro 569296 569376 80 0.0
.rodata 496701 496829 128 0.0
.text 7784997 7787525 2528 0.0
chip-tool-no-interactive-ipv6only arm64 (read only) 9413516 9416188 2672 0.0
(read/write) 666929 667009 80 0.0
.data.rel.ro 604696 604776 80 0.0
.rodata 460228 460340 112 0.0
.text 7429428 7431748 2320 0.0
lighting-app debug+rpc (read only) 2319921 2322721 2800 0.1
(read/write) 153536 153600 64 0.0
.data.rel.ro 70984 71048 64 0.1
.rodata 188456 188584 128 0.1
.text 1965714 1968194 2480 0.1
lock-app debug (read only) 2258857 2261609 2752 0.1
(read/write) 148632 148696 64 0.0
.data.rel.ro 67912 67976 64 0.1
.rodata 201576 201672 96 0.0
.text 1896962 1899426 2464 0.1
ota-provider-app debug (read only) 2068689 2071489 2800 0.1
(read/write) 141584 141648 64 0.0
.data.rel.ro 61000 61064 64 0.1
.rodata 180920 181048 128 0.1
.text 1728674 1731154 2480 0.1
ota-requestor-app debug (read only) 2096753 2099585 2832 0.1
(read/write) 144424 144488 64 0.0
.data.rel.ro 63096 63160 64 0.1
.rodata 176960 177056 96 0.1
.text 1759234 1761778 2544 0.1
shell debug (read only) 2574073 2576905 2832 0.1
(read/write) 201680 201744 64 0.0
.data.rel.ro 77464 77528 64 0.1
.rodata 224498 224594 96 0.0
.text 2190130 2192674 2544 0.1
thermostat-no-ble arm64 (read only) 2367316 2369948 2632 0.1
(read/write) 177457 177521 64 0.0
.data.rel.ro 80216 80280 64 0.1
.rodata 148708 148828 120 0.1
.text 1988960 1991280 2320 0.1
tv-app debug (read only) 2878065 2880977 2912 0.1
(read/write) 280208 280304 96 0.0
.data.rel.ro 78224 78304 80 0.1
.rodata 222848 222976 128 0.1
.text 2472610 2475154 2544 0.1
tv-casting-app debug (read only) 5430313 5433209 2896 0.1
(read/write) 226000 226064 64 0.0
.data.rel.ro 138760 138824 64 0.0
.rodata 340352 340512 160 0.0
.text 4730706 4733250 2544 0.1
mbed lock-app CY8CPROTO_062_4343W+release (read/write) 2424832 2425304 472 0.0
.text 1387476 1387948 472 0.0
p6 all-clusters-app default (read/write) 2541352 2542000 648 0.0
.text 1499616 1500264 648 0.0
all-clusters-minimal-app default (read/write) 2487304 2487936 632 0.0
.text 1445568 1446200 632 0.0
light-app default (read/write) 2421248 2421880 632 0.0
.text 1379512 1380144 632 0.0
lock-app default (read/write) 2439296 2439928 632 0.0
.text 1397560 1398192 632 0.0
telink light-switch-app tlsr9518adk80d (read/write) 780048 780708 660 0.1
text 551456 552086 630 0.1
lighting-app tlsr9518adk80d (read/write) 800092 800744 652 0.1
text 568198 568828 630 0.1
Decreases (3 builds for cc13x2_26x2)
platform target config section 8ef608d afaab2c change % change
cc13x2_26x2 lock-ftd LP_CC2652R7 (read/write) 162828 162292 -536 -0.3
pump-app LP_CC2652R7 (read/write) 167576 167048 -528 -0.3
pump-controller-app LP_CC2652R7 (read/write) 189504 188976 -528 -0.3
Full report (39 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, p6, telink)
platform target config section 8ef608d afaab2c change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 648347 648867 520 0.1
(read/write) 158900 158900 0 0.0
.bss 74580 74580 0 0.0
.data 3404 3404 0 0.0
.rodata 84499 84523 24 0.0
.text 563612 564108 496 0.1
all-clusters-minimal-app LP_CC2652R7 (read only) 615179 615707 528 0.1
(read/write) 158072 158072 0 0.0
.bss 73812 73812 0 0.0
.data 3344 3344 0 0.0
.rodata 73883 73907 24 0.0
.text 541060 541564 504 0.1
lock-ftd LP_CC2652R7 (read only) 679995 680531 536 0.1
(read/write) 162828 162292 -536 -0.3
.bss 72604 72604 0 0.0
.data 3268 3268 0 0.0
.rodata 96563 96587 24 0.0
.text 582948 583460 512 0.1
lock-mtd LP_CC2652R7 (read only) 629411 629947 536 0.1
(read/write) 145724 145724 0 0.0
.bss 68340 68340 0 0.0
.data 3268 3268 0 0.0
.rodata 96451 96475 24 0.0
.text 532468 532980 512 0.1
pump-app LP_CC2652R7 (read only) 676415 676943 528 0.1
(read/write) 167576 167048 -528 -0.3
.bss 73004 73004 0 0.0
.data 3304 3304 0 0.0
.rodata 89039 89063 24 0.0
.text 586892 587396 504 0.1
pump-controller-app LP_CC2652R7 (read only) 654343 654871 528 0.1
(read/write) 189504 188976 -528 -0.3
.bss 72860 72860 0 0.0
.data 3264 3264 0 0.0
.rodata 83767 83791 24 0.0
.text 570096 570600 504 0.1
shell LP_CC2652R7 (read only) 641362 641890 528 0.1
(read/write) 154456 154456 0 0.0
.bss 76932 76932 0 0.0
.data 3408 3408 0 0.0
.rodata 81490 81514 24 0.0
.text 559640 560144 504 0.1
cyw30739 light cyw930739m2evb_01 (read/write) 622118 622758 640 0.1
.app_xip_area 525696 526336 640 0.1
.bss 79064 79064 0 0.0
.data 708 708 0 0.0
.rodata 0 0 0 0.0
.text 0 0 0 0.0
lock cyw930739m2evb_01 (read/write) 630826 631466 640 0.1
.app_xip_area 535876 536516 640 0.1
.bss 77624 77624 0 0.0
.data 676 676 0 0.0
.rodata 0 0 0 0.0
.text 0 0 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 570978 571610 632 0.1
.app_xip_area 466100 466732 632 0.1
.bss 87224 87224 0 0.0
.data 616 616 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read only) 914876 915508 632 0.1
(read/write) 133184 133184 0 0.0
.bss 131088 131088 0 0.0
.data 2096 2096 0 0.0
.text 914868 915500 632 0.1
BRD4161A+rpc (read only) 949032 949664 632 0.1
(read/write) 149880 149880 0 0.0
.bss 147576 147576 0 0.0
.data 2300 2300 0 0.0
.text 949024 949656 632 0.1
BRD4161A+rs911x (read only) 789736 790384 648 0.1
(read/write) 129460 129460 0 0.0
.bss 127356 127356 0 0.0
.data 2104 2104 0 0.0
.text 789728 790376 648 0.1
lock-app BRD4161A+wf200 (read only) 954756 955292 536 0.1
(read/write) 128240 128240 0 0.0
.bss 126172 126172 0 0.0
.data 2068 2068 0 0.0
.text 954748 955284 536 0.1
window-app BRD4161A (read only) 899796 900444 648 0.1
(read/write) 133252 133252 0 0.0
.bss 131160 131160 0 0.0
.data 2092 2092 0 0.0
.text 899788 900436 648 0.1
esp32 all-clusters-app c3devkit (read only) 1005546 1006170 624 0.1
(read/write) 1480002 1480026 24 0.0
.dram0.bss 69144 69144 0 0.0
.dram0.data 14656 14656 0 0.0
.flash.rodata 210768 210792 24 0.0
.flash.text 1005546 1006170 624 0.1
.iram0.text 62954 62954 0 0.0
m5stack (read only) 1060695 1061187 492 0.0
(read/write) 482208 482232 24 0.0
.dram0.bss 74664 74664 0 0.0
.dram0.data 34208 34208 0 0.0
.flash.rodata 241340 241364 24 0.0
.flash.text 1055311 1055803 492 0.0
.iram0.text 123267 123267 0 0.0
k32w light k32w061+release (read/write) 680700 681220 520 0.1
.bss 80168 80168 0 0.0
.data 2012 2012 0 0.0
.text 596816 597336 520 0.1
lock k32w061+release (read/write) 732692 733212 520 0.1
.bss 80600 80600 0 0.0
.data 1980 1980 0 0.0
.text 648408 648928 520 0.1
linux all-clusters-app debug (read only) 2769985 2772801 2816 0.1
(read/write) 178272 178336 64 0.0
.bss 86240 86240 0 0.0
.data 2032 2032 0 0.0
.data.rel.ro 83848 83912 64 0.1
.dynamic 608 608 0 0.0
.got 4496 4496 0 0.0
.init 27 27 0 0.0
.init_array 1016 1016 0 0.0
.rodata 244381 244477 96 0.0
.text 2351650 2354178 2528 0.1
all-clusters-minimal-app debug (read only) 2647073 2649921 2848 0.1
(read/write) 170304 170368 64 0.0
.bss 85504 85504 0 0.0
.data 1904 1904 0 0.0
.data.rel.ro 76728 76792 64 0.1
.dynamic 608 608 0 0.0
.got 4496 4496 0 0.0
.init 27 27 0 0.0
.init_array 1016 1016 0 0.0
.rodata 246269 246397 128 0.1
.text 2228242 2230770 2528 0.1
bridge-app debug+rpc (read only) 2030297 2033049 2752 0.1
(read/write) 147896 147960 64 0.0
.bss 72896 72896 0 0.0
.data 3936 3936 0 0.0
.data.rel.ro 65496 65560 64 0.1
.dynamic 592 592 0 0.0
.got 4272 4272 0 0.0
.init 27 27 0 0.0
.init_array 688 688 0 0.0
.rodata 169472 169568 96 0.1
.text 1704306 1706770 2464 0.1
chip-tool debug (read only) 9670285 9673181 2896 0.0
(read/write) 600688 600752 64 0.0
.bss 23968 23968 0 0.0
.data 1120 1120 0 0.0
.data.rel.ro 569296 569376 80 0.0
.dynamic 624 624 0 0.0
.got 5008 5008 0 0.0
.init 27 27 0 0.0
.init_array 648 648 0 0.0
.rodata 496701 496829 128 0.0
.text 7784997 7787525 2528 0.0
chip-tool-no-interactive-ipv6only arm64 (read only) 9413516 9416188 2672 0.0
(read/write) 666929 667009 80 0.0
.bss 42257 42257 0 0.0
.data 1176 1176 0 0.0
.data.rel.ro 604696 604776 80 0.0
.dynamic 528 528 0 0.0
.got 14984 14984 0 0.0
.init 24 24 0 0.0
.init_array 184 184 0 0.0
.rodata 460228 460340 112 0.0
.text 7429428 7431748 2320 0.0
lighting-app debug+rpc (read only) 2319921 2322721 2800 0.1
(read/write) 153536 153600 64 0.0
.bss 74752 74752 0 0.0
.data 2048 2048 0 0.0
.data.rel.ro 70984 71048 64 0.1
.dynamic 608 608 0 0.0
.got 4344 4344 0 0.0
.init 27 27 0 0.0
.init_array 792 792 0 0.0
.rodata 188456 188584 128 0.1
.text 1965714 1968194 2480 0.1
lock-app debug (read only) 2258857 2261609 2752 0.1
(read/write) 148632 148696 64 0.0
.bss 73440 73440 0 0.0
.data 1568 1568 0 0.0
.data.rel.ro 67912 67976 64 0.1
.dynamic 592 592 0 0.0
.got 4336 4336 0 0.0
.init 27 27 0 0.0
.init_array 752 752 0 0.0
.rodata 201576 201672 96 0.0
.text 1896962 1899426 2464 0.1
ota-provider-app debug (read only) 2068689 2071489 2800 0.1
(read/write) 141584 141648 64 0.0
.bss 73024 73024 0 0.0
.data 1768 1768 0 0.0
.data.rel.ro 61000 61064 64 0.1
.dynamic 608 608 0 0.0
.got 4504 4504 0 0.0
.init 27 27 0 0.0
.init_array 648 648 0 0.0
.rodata 180920 181048 128 0.1
.text 1728674 1731154 2480 0.1
ota-requestor-app debug (read only) 2096753 2099585 2832 0.1
(read/write) 144424 144488 64 0.0
.bss 73728 73728 0 0.0
.data 1960 1960 0 0.0
.data.rel.ro 63096 63160 64 0.1
.dynamic 592 592 0 0.0
.got 4344 4344 0 0.0
.init 27 27 0 0.0
.init_array 672 672 0 0.0
.rodata 176960 177056 96 0.1
.text 1759234 1761778 2544 0.1
shell debug (read only) 2574073 2576905 2832 0.1
(read/write) 201680 201744 64 0.0
.bss 117096 117096 0 0.0
.data 1376 1376 0 0.0
.data.rel.ro 77464 77528 64 0.1
.dynamic 608 608 0 0.0
.got 4192 4192 0 0.0
.init 27 27 0 0.0
.init_array 928 928 0 0.0
.rodata 224498 224594 96 0.0
.text 2190130 2192674 2544 0.1
thermostat-no-ble arm64 (read only) 2367316 2369948 2632 0.1
(read/write) 177457 177521 64 0.0
.bss 87921 87921 0 0.0
.data 1528 1528 0 0.0
.data.rel.ro 80216 80280 64 0.1
.dynamic 528 528 0 0.0
.got 4792 4792 0 0.0
.init 24 24 0 0.0
.init_array 376 376 0 0.0
.rodata 148708 148828 120 0.1
.text 1988960 1991280 2320 0.1
tv-app debug (read only) 2878065 2880977 2912 0.1
(read/write) 280208 280304 96 0.0
.bss 191048 191048 0 0.0
.data 4672 4672 0 0.0
.data.rel.ro 78224 78304 80 0.1
.dynamic 592 592 0 0.0
.got 4728 4728 0 0.0
.init 27 27 0 0.0
.init_array 928 928 0 0.0
.rodata 222848 222976 128 0.1
.text 2472610 2475154 2544 0.1
tv-casting-app debug (read only) 5430313 5433209 2896 0.1
(read/write) 226000 226064 64 0.0
.bss 78632 78632 0 0.0
.data 2400 2400 0 0.0
.data.rel.ro 138760 138824 64 0.0
.dynamic 608 608 0 0.0
.got 4728 4728 0 0.0
.init 27 27 0 0.0
.init_array 864 864 0 0.0
.rodata 340352 340512 160 0.0
.text 4730706 4733250 2544 0.1
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2424832 2425304 472 0.0
.bss 202620 202620 0 0.0
.data 5872 5872 0 0.0
.text 1387476 1387948 472 0.0
p6 all-clusters-app default (read/write) 2541352 2542000 648 0.0
.bss 137104 137104 0 0.0
.data 2808 2808 0 0.0
.text 1499616 1500264 648 0.0
all-clusters-minimal-app default (read/write) 2487304 2487936 632 0.0
.bss 136328 136328 0 0.0
.data 2744 2744 0 0.0
.text 1445568 1446200 632 0.0
light-app default (read/write) 2421248 2421880 632 0.0
.bss 129432 129432 0 0.0
.data 2600 2600 0 0.0
.text 1379512 1380144 632 0.0
lock-app default (read/write) 2439296 2439928 632 0.0
.bss 129248 129248 0 0.0
.data 2568 2568 0 0.0
.text 1397560 1398192 632 0.0
telink light-switch-app tlsr9518adk80d (read/write) 780048 780708 660 0.1
bss 70564 70564 0 0.0
noinit 40416 40416 0 0.0
text 551456 552086 630 0.1
lighting-app tlsr9518adk80d (read/write) 800092 800744 652 0.1
bss 70824 70824 0 0.0
noinit 40416 40416 0 0.0
text 568198 568828 630 0.1

@stale
Copy link

stale bot commented Jun 10, 2022

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

@stale stale bot added stale Stale issue or PR and removed stale Stale issue or PR labels Jun 10, 2022
@mrjerryjohns
Copy link
Contributor

Is this going to get updated @kghost ?

@kghost
Copy link
Contributor Author

kghost commented Jun 21, 2022

After retry logic moved to application layer, I can't accomplish the goal in transport layer or messaging layer. I'll provide required API for applications to implement session recovery.

@woody-apple
Copy link
Contributor

Can we make sure the default implementation (without app intervention) has a sane retry policy. If apps want to override that, that's their choice, but we should make sure the default implementation is a workable one.

@stale
Copy link

stale bot commented Jul 1, 2022

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

@stale stale bot added the stale Stale issue or PR label Jul 1, 2022
@stale
Copy link

stale bot commented Jul 9, 2022

This stale pull request has been automatically closed. Thank you for your contributions.

@stale stale bot closed this Jul 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Figure out interaction timeout behaviors and recovery logic
6 participants