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

[Darwin] MTRDeviceController should clear attribute cache on pairing start #32549

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jtung-apple
Copy link
Contributor

Changes in this PR:

  • On pairing start, MTRDeviceController will clear information about the new node ID - both the in-memory MTRDevice and persisted attribute storage.
  • Additional logging for attribute storage
  • Bug fix for attribute storage _pruneEmptyStoredAttributesBranches method
Copy link

github-actions bot commented Mar 12, 2024

PR #32549: Size comparison from 9a947d8 to 51a600f

Decreases (3 builds for efr32)
platform target config section 9a947d86 51a600f change % change
efr32 lighting-app BRD4161A+rs9116 (read/write) 933464 933456 -8 -0.0
.text 734084 734076 -8 -0.0
BRD4187C (read/write) 1110368 1110360 -8 -0.0
.text 911756 911748 -8 -0.0
window-app BRD4187C (read/write) 1157048 1157040 -8 -0.0
.text 986276 986268 -8 -0.0
Full report (73 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, stm32, telink)
platform target config section 9a947d86 51a600f change % change
bl602 lighting-app bl602 (read/write) 1437690 1437690 0 0.0
.bss 85352 85352 0 0.0
.data 9496 9496 0 0.0
.rodata 158448 158448 0 0.0
.text 1103746 1103746 0 0.0
bl602+mfd (read/write) 1452106 1452106 0 0.0
.bss 85512 85512 0 0.0
.data 9472 9472 0 0.0
.rodata 157408 157408 0 0.0
.text 1119064 1119064 0 0.0
bl602+rpc (read/write) 1485330 1485330 0 0.0
.bss 93384 93384 0 0.0
.data 9872 9872 0 0.0
.rodata 166016 166016 0 0.0
.text 1135392 1135392 0 0.0
bl702 lighting-app bl702 (read only) 3478 3478 0 0.0
(read/write) 1202131 1202131 0 0.0
.bss 11133 11133 0 0.0
.data 3680 3680 0 0.0
.rodata 107800 107800 0 0.0
.text 972646 972646 0 0.0
bl702+mfd (read only) 3478 3478 0 0.0
(read/write) 1213183 1213183 0 0.0
.bss 11309 11309 0 0.0
.data 3656 3656 0 0.0
.rodata 106740 106740 0 0.0
.text 984656 984656 0 0.0
bl702+rpc (read only) 3478 3478 0 0.0
(read/write) 1293879 1293879 0 0.0
.bss 19613 19613 0 0.0
.data 4216 4216 0 0.0
.rodata 123172 123172 0 0.0
.text 1047610 1047610 0 0.0
bl706-eth (read/write) 1020101 1020101 0 0.0
.bss 23708 23708 0 0.0
.data 3256 3256 0 0.0
.rodata 101132 101132 0 0.0
.text 764030 764030 0 0.0
bl706-wifi (read/write) 1254610 1254610 0 0.0
.bss 10577 10577 0 0.0
.data 3688 3688 0 0.0
.rodata 122132 122132 0 0.0
.text 995802 995802 0 0.0
bl702l lighting-app bl702l (read only) 512 512 0 0.0
(read/write) 1171704 1171704 0 0.0
.bss 16328 16328 0 0.0
.data 5040 5040 0 0.0
.rodata 101804 101804 0 0.0
.text 965744 965744 0 0.0
bl702l+mfd (read only) 512 512 0 0.0
(read/write) 1183112 1183112 0 0.0
.bss 16504 16504 0 0.0
.data 5024 5024 0 0.0
.rodata 100744 100744 0 0.0
.text 978066 978066 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 (read only) 773996 773996 0 0.0
(read/write) 168624 168624 0 0.0
.bss 90628 90628 0 0.0
.data 3560 3560 0 0.0
.rodata 81820 81820 0 0.0
.text 691912 691912 0 0.0
lock-ftd LP_EM_CC1354P10_6 (read only) 790404 790404 0 0.0
(read/write) 178872 178872 0 0.0
.bss 100876 100876 0 0.0
.data 3560 3560 0 0.0
.rodata 76004 76004 0 0.0
.text 714136 714136 0 0.0
lock-mtd LP_EM_CC1354P10_6 (read only) 779076 779076 0 0.0
(read/write) 173312 173312 0 0.0
.bss 95316 95316 0 0.0
.data 3560 3560 0 0.0
.rodata 102756 102756 0 0.0
.text 676056 676056 0 0.0
pump-app LP_EM_CC1354P10_6 (read only) 731340 731340 0 0.0
(read/write) 167592 167592 0 0.0
.bss 89360 89360 0 0.0
.data 3552 3552 0 0.0
.rodata 77484 77484 0 0.0
.text 653592 653592 0 0.0
pump-controller-app LP_EM_CC1354P10_6 (read only) 716852 716852 0 0.0
(read/write) 167800 167800 0 0.0
.bss 89584 89584 0 0.0
.data 3544 3544 0 0.0
.rodata 73268 73268 0 0.0
.text 643320 643320 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL (read only) 583314 583314 0 0.0
(read/write) 207992 207992 0 0.0
.bss 201228 201228 0 0.0
.data 1640 1640 0 0.0
.rodata 86602 86602 0 0.0
.text 494588 494588 0 0.0
lock CC3235SF_LAUNCHXL (read only) 628586 628586 0 0.0
(read/write) 208336 208336 0 0.0
.bss 201720 201720 0 0.0
.data 1496 1496 0 0.0
.rodata 107058 107058 0 0.0
.text 519404 519404 0 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 569115 569115 0 0.0
.app_xip_area 458869 458869 0 0.0
.bss 65080 65080 0 0.0
.data 744 744 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 551787 551787 0 0.0
.app_xip_area 436781 436781 0 0.0
.bss 69832 69832 0 0.0
.data 752 752 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor cyw930739m2evb_01 (read/write) 571947 571947 0 0.0
.app_xip_area 463205 463205 0 0.0
.bss 63616 63616 0 0.0
.data 704 704 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
switch cyw930739m2evb_01 (read/write) 564851 564851 0 0.0
.app_xip_area 452829 452829 0 0.0
.bss 66816 66816 0 0.0
.data 784 784 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A+rs9116 (read/write) 933464 933456 -8 -0.0
.bss 197960 197960 0 0.0
.data 1396 1396 0 0.0
.text 734084 734076 -8 -0.0
BRD4187C (read/write) 1110368 1110360 -8 -0.0
.bss 195176 195176 0 0.0
.data 3416 3416 0 0.0
.text 911756 911748 -8 -0.0
lock-app BRD4161A+wf200 (read/write) 1122748 1122748 0 0.0
.bss 186788 186788 0 0.0
.data 2800 2800 0 0.0
.text 933140 933140 0 0.0
window-app BRD4187C (read/write) 1157048 1157040 -8 -0.0
.bss 167424 167424 0 0.0
.data 3328 3328 0 0.0
.text 986276 986268 -8 -0.0
esp32 all-clusters-app c3devkit (read only) 1211602 1211602 0 0.0
(read/write) 1749760 1749760 0 0.0
.dram0.bss 74320 74320 0 0.0
.dram0.data 13620 13620 0 0.0
.flash.rodata 252288 252288 0 0.0
.flash.text 1211602 1211602 0 0.0
.iram0.text 75530 75530 0 0.0
m5stack (read only) 1253847 1253847 0 0.0
(read/write) 536352 536352 0 0.0
.dram0.bss 81256 81256 0 0.0
.dram0.data 35164 35164 0 0.0
.flash.rodata 284012 284012 0 0.0
.flash.text 1247683 1247683 0 0.0
.iram0.text 125403 125403 0 0.0
k32w contact k32w0+release (read only) 606304 606304 0 0.0
(read/write) 79660 79660 0 0.0
.bss 67476 67476 0 0.0
.data 2200 2200 0 0.0
.text 605768 605768 0 0.0
k32w1+release (read only) 1024 1024 0 0.0
(read/write) 747712 747712 0 0.0
.bss 79212 79212 0 0.0
.data 2816 2816 0 0.0
.text 626312 626312 0 0.0
light k32w0+release (read only) 610056 610056 0 0.0
(read/write) 79536 79536 0 0.0
.bss 67348 67348 0 0.0
.data 2204 2204 0 0.0
.text 609520 609520 0 0.0
k32w1+release (read only) 1024 1024 0 0.0
(read/write) 790492 790492 0 0.0
.bss 80604 80604 0 0.0
.data 2032 2032 0 0.0
.text 668496 668496 0 0.0
lock k32w0+release (read only) 589856 589856 0 0.0
(read/write) 77524 77524 0 0.0
.bss 65388 65388 0 0.0
.data 2152 2152 0 0.0
.text 589320 589320 0 0.0
linux air-purifier-app debug (read only) 2617181 2617181 0 0.0
(read/write) 128960 128960 0 0.0
.bss 46544 46544 0 0.0
.data 2240 2240 0 0.0
.data.rel.ro 74248 74248 0 0.0
.dynamic 608 608 0 0.0
.got 4544 4544 0 0.0
.init 27 27 0 0.0
.init_array 744 744 0 0.0
.rodata 185008 185008 0 0.0
.text 2254709 2254709 0 0.0
all-clusters-app debug (read only) 5923601 5923601 0 0.0
(read/write) 480432 480432 0 0.0
.bss 134848 134848 0 0.0
.data 4528 4528 0 0.0
.data.rel.ro 333640 333640 0 0.0
.dynamic 624 624 0 0.0
.got 5360 5360 0 0.0
.init 27 27 0 0.0
.init_array 1384 1384 0 0.0
.rodata 349744 349744 0 0.0
.text 5140483 5140483 0 0.0
all-clusters-minimal-app debug (read only) 5204113 5204113 0 0.0
(read/write) 236384 236384 0 0.0
.bss 127680 127680 0 0.0
.data 4432 4432 0 0.0
.data.rel.ro 97208 97208 0 0.0
.dynamic 624 624 0 0.0
.got 5280 5280 0 0.0
.init 27 27 0 0.0
.init_array 1112 1112 0 0.0
.rodata 288746 288746 0 0.0
.text 4680659 4680659 0 0.0
bridge-app debug (read only) 4598561 4598561 0 0.0
(read/write) 217232 217232 0 0.0
.bss 118176 118176 0 0.0
.data 6208 6208 0 0.0
.data.rel.ro 86144 86144 0 0.0
.dynamic 624 624 0 0.0
.got 5248 5248 0 0.0
.init 27 27 0 0.0
.init_array 808 808 0 0.0
.rodata 229386 229386 0 0.0
.text 4148883 4148883 0 0.0
chip-tool debug (read only) 12040409 12040409 0 0.0
(read/write) 521512 521512 0 0.0
.bss 94424 94424 0 0.0
.data 5122 5122 0 0.0
.data.rel.ro 414744 414744 0 0.0
.dynamic 624 624 0 0.0
.got 5768 5768 0 0.0
.init 27 27 0 0.0
.init_array 776 776 0 0.0
.rodata 449049 449049 0 0.0
.text 10885587 10885587 0 0.0
chip-tool-ipv6only arm64 (read only) 1136494 1136494 0 0.0
(read/write) 585136 585136 0 0.0
.bss 103512 103512 0 0.0
.data 4496 4496 0 0.0
.data.rel.ro 454592 454592 0 0.0
.dynamic 512 512 0 0.0
.got 16976 16976 0 0.0
.init 24 24 0 0.0
.init_array 256 256 0 0.0
.rodata 354956 354956 0 0.0
.text 10131576 10131576 0 0.0
lighting-app debug+rpc+ui (read only) 5522169 5522169 0 0.0
(read/write) 226024 226024 0 0.0
.bss 119144 119144 0 0.0
.data 4832 4832 0 0.0
.data.rel.ro 94544 94544 0 0.0
.dynamic 672 672 0 0.0
.got 5888 5888 0 0.0
.init 27 27 0 0.0
.init_array 920 920 0 0.0
.rodata 354548 354548 0 0.0
.text 4920947 4920947 0 0.0
lock-app debug (read only) 4665921 4665921 0 0.0
(read/write) 204816 204816 0 0.0
.bss 113600 113600 0 0.0
.data 4128 4128 0 0.0
.data.rel.ro 80392 80392 0 0.0
.dynamic 624 624 0 0.0
.got 5200 5200 0 0.0
.init 27 27 0 0.0
.init_array 840 840 0 0.0
.rodata 255306 255306 0 0.0
.text 4198963 4198963 0 0.0
ota-provider-app debug (read only) 4297769 4297769 0 0.0
(read/write) 193288 193288 0 0.0
.bss 113280 113280 0 0.0
.data 4336 4336 0 0.0
.data.rel.ro 69776 69776 0 0.0
.dynamic 624 624 0 0.0
.got 4536 4536 0 0.0
.init 27 27 0 0.0
.init_array 704 704 0 0.0
.rodata 207882 207882 0 0.0
.text 3896915 3896915 0 0.0
ota-requestor-app debug (read only) 4427209 4427209 0 0.0
(read/write) 197720 197720 0 0.0
.bss 114208 114208 0 0.0
.data 4736 4736 0 0.0
.data.rel.ro 72896 72896 0 0.0
.dynamic 624 624 0 0.0
.got 4472 4472 0 0.0
.init 27 27 0 0.0
.init_array 752 752 0 0.0
.rodata 213994 213994 0 0.0
.text 4015699 4015699 0 0.0
shell debug (read only) 2891321 2891321 0 0.0
(read/write) 156352 156352 0 0.0
.bss 62736 62736 0 0.0
.data 1392 1392 0 0.0
.data.rel.ro 86464 86464 0 0.0
.dynamic 592 592 0 0.0
.got 4072 4072 0 0.0
.init 27 27 0 0.0
.init_array 1064 1064 0 0.0
.rodata 185696 185696 0 0.0
.text 2532306 2532306 0 0.0
thermostat-no-ble arm64 (read only) 4417364 4417364 0 0.0
(read/write) 245592 245592 0 0.0
.bss 121832 121832 0 0.0
.data 3376 3376 0 0.0
.data.rel.ro 103624 103624 0 0.0
.dynamic 512 512 0 0.0
.got 8616 8616 0 0.0
.init 24 24 0 0.0
.init_array 424 424 0 0.0
.rodata 159404 159404 0 0.0
.text 3923320 3923320 0 0.0
tv-app debug (read only) 5712849 5712849 0 0.0
(read/write) 352584 352584 0 0.0
.bss 244368 244368 0 0.0
.data 6528 6528 0 0.0
.data.rel.ro 94424 94424 0 0.0
.dynamic 624 624 0 0.0
.got 5496 5496 0 0.0
.init 27 27 0 0.0
.init_array 1136 1136 0 0.0
.rodata 290506 290506 0 0.0
.text 5180259 5180259 0 0.0
tv-casting-app debug (read only) 9865129 9865129 0 0.0
(read/write) 340296 340296 0 0.0
.bss 156272 156272 0 0.0
.data 2976 2976 0 0.0
.data.rel.ro 174176 174176 0 0.0
.dynamic 624 624 0 0.0
.got 5072 5072 0 0.0
.init 27 27 0 0.0
.init_array 1168 1168 0 0.0
.rodata 383032 383032 0 0.0
.text 9016355 9016355 0 0.0
mbed lock-app-release cy8cproto_062_4343w (read only) 6224 6224 0 0.0
(read/write) 2532304 2532304 0 0.0
.bss 220472 220472 0 0.0
.data 5200 5200 0 0.0
.text 1494988 1494988 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1103160 1103160 0 0.0
bss 130855 130855 0 0.0
rodata 112928 112928 0 0.0
text 811552 811552 0 0.0
nrf7002dk_nrf5340_cpuapp (read only) 4 4 0 0.0
(read/write) 1222408 1222408 0 0.0
bss 122945 122945 0 0.0
rodata 141792 141792 0 0.0
text 807148 807148 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1051408 1051408 0 0.0
bss 129713 129713 0 0.0
rodata 100288 100288 0 0.0
text 773592 773592 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 (read only) 834440 834440 0 0.0
(read/write) 1796788 1796788 0 0.0
.bss 196236 196236 0 0.0
.data 2664 2664 0 0.0
.text 1589500 1589500 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 (read only) 837584 837584 0 0.0
(read/write) 1718820 1718820 0 0.0
.bss 193116 193116 0 0.0
.data 2640 2640 0 0.0
.text 1514676 1514676 0 0.0
light cy8ckit_062s2_43012 (read only) 844312 844312 0 0.0
(read/write) 1637948 1637948 0 0.0
.bss 186580 186580 0 0.0
.data 2448 2448 0 0.0
.text 1440532 1440532 0 0.0
lock cy8ckit_062s2_43012 (read only) 817160 817160 0 0.0
(read/write) 1667588 1667588 0 0.0
.bss 213740 213740 0 0.0
.data 2440 2440 0 0.0
.text 1443020 1443020 0 0.0
qpg lighting-app qpg6105+debug (read/write) 1129980 1129980 0 0.0
.bss 102480 102480 0 0.0
.data 824 824 0 0.0
.text 642360 642360 0 0.0
lock-app qpg6105+debug (read/write) 1089948 1089948 0 0.0
.bss 97224 97224 0 0.0
.data 844 844 0 0.0
.text 602332 602332 0 0.0
stm32 light STM32WB5MM-DK (read/write) 601201 601201 0 0.0
.bss 128344 128344 0 0.0
.data 668 668 0 0.0
.rodata 79716 79716 0 0.0
.text 382744 382744 0 0.0
telink air-quality-sensor-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 823954 823954 0 0.0
bss 49684 49684 0 0.0
text 616750 616750 0 0.0
all-clusters-app tlsr9518adk80d (read only) 29042 29042 0 0.0
(read/write) 1092800 1092800 0 0.0
bss 101804 101804 0 0.0
text 793858 793858 0 0.0
all-clusters-minimal-app tlsr9528a (read only) 47960 47960 0 0.0
(read/write) 1050264 1050264 0 0.0
bss 110108 110108 0 0.0
text 765180 765180 0 0.0
bridge-app tlsr9518adk80d (read only) 29042 29042 0 0.0
(read/write) 910976 910976 0 0.0
bss 93140 93140 0 0.0
text 652656 652656 0 0.0
contact-sensor-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 825578 825578 0 0.0
bss 49732 49732 0 0.0
text 618440 618440 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a (read only) 51584 51584 0 0.0
(read/write) 931288 931288 0 0.0
bss 77732 77732 0 0.0
text 698584 698584 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d (read only) 29122 29122 0 0.0
(read/write) 1074156 1074156 0 0.0
bss 100220 100220 0 0.0
text 778044 778044 0 0.0
lock-app-dfu tlsr9528a (read only) 51584 51584 0 0.0
(read/write) 903688 903688 0 0.0
bss 69196 69196 0 0.0
text 653852 653852 0 0.0
ota-requestor-app tlsr9518adk80d (read only) 29042 29042 0 0.0
(read/write) 929956 929956 0 0.0
bss 92720 92720 0 0.0
text 671734 671734 0 0.0
pump-app tlsr9258a_retention (read only) 51774 51774 0 0.0
(read/write) 828310 828310 0 0.0
bss 49840 49840 0 0.0
text 621502 621502 0 0.0
pump-controller-app tlsr9518adk80d (read only) 31872 31872 0 0.0
(read/write) 791884 791884 0 0.0
bss 56040 56040 0 0.0
text 592178 592178 0 0.0
shell tlsr9518adk80d (read only) 29042 29042 0 0.0
(read/write) 677224 677224 0 0.0
bss 73672 73672 0 0.0
text 462484 462484 0 0.0
smoke_co_alarm-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 833114 833114 0 0.0
bss 51364 51364 0 0.0
text 624810 624810 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d (read only) 32220 32220 0 0.0
(read/write) 851845 851845 0 0.0
bss 59516 59516 0 0.0
text 636888 636888 0 0.0
thermostat tlsr9518adk80d (read only) 31872 31872 0 0.0
(read/write) 817532 817532 0 0.0
bss 56328 56328 0 0.0
text 611862 611862 0 0.0
window-covering tlsr9258a (read only) 51584 51584 0 0.0
(read/write) 835624 835624 0 0.0
bss 68104 68104 0 0.0
text 627116 627116 0 0.0
@@ -607,6 +608,13 @@ - (BOOL)setupCommissioningSessionWithPayload:(MTRSetupPayload *)payload
error:(NSError * __autoreleasing *)error
{
auto block = ^BOOL {
// First reset previous information about this new nodeID
os_unfair_lock_lock(&_deviceMapLock);
[self _removeDeviceWithNodeID:newNodeID device:nil];
Copy link
Contributor

Choose a reason for hiding this comment

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

The problem is that the "node ID" in this API is not an actual operational node ID. It does not have to match the operational node ID that the commissionee will get. It's really a "commissioning process handle" or some such...

Some API consumers might have this match actual operational node IDs. Others will not. The latter will be broken by these changes, as far as I can tell.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
2 participants