Restart contact streams after storage recovery

Release cached path snapshots before resetting contacts while retaining the requesting transport and table revision for a complete stream restart. Keep explicit session cancellation unchanged and avoid copying uncached contact buffers.

Cover cached and uncached recovery, transport isolation, empty reloads, backpressure, and the former cancellation as a negative control.
This commit is contained in:
mikecarper committed 2026-10-16 09:11:19 -07:00
1 parent 587700a36a
commit e5706bafa1
5 files changed
+232 -10

No files matched your search

+6 -1
View File
@@ -7526,7 +7526,12 @@ void MyMesh::onContactCacheFlushed() {
}
bool MyMesh::resetContactsForRecovery() {
stopContactsIterator();
// Release retained paths before resetting the table. Keep the stream owner
// so its changed table revision restarts a complete list on the next pass.
#if MESH_CONTACT_CACHE
_iter_pending_contact = ContactInfo();
#endif
_iter_contact_pending = false;
resetContacts();
MyMesh::onContactCacheFlushed();
return true;