Summary
Device discovery polling can stop permanently after a single transient failure during a query operation.
Problem
The polling loop only schedules the next iteration on the success path.
When a query fails, the error is logged but no retry is scheduled.
Because Android and iOS trackers start this loop only once, a temporary adb/xcrun failure can silently disable device discovery until the extension is restarted.
Impact
Device discovery may stop unexpectedly
Network Inspector device list can become stale or empty
Recovery currently requires restarting the extension
Expected Behavior
Polling should continue regardless of whether the previous iteration succeeds or fails, while still preventing overlapping query executions.
Proposed Fix
Schedule the next polling iteration in finally (guarded by stop state), so both success and failure paths continue polling.
Summary
Device discovery polling can stop permanently after a single transient failure during a query operation.
Problem
The polling loop only schedules the next iteration on the success path.
When a query fails, the error is logged but no retry is scheduled.
Because Android and iOS trackers start this loop only once, a temporary adb/xcrun failure can silently disable device discovery until the extension is restarted.
Impact
Device discovery may stop unexpectedly
Network Inspector device list can become stale or empty
Recovery currently requires restarting the extension
Expected Behavior
Polling should continue regardless of whether the previous iteration succeeds or fails, while still preventing overlapping query executions.
Proposed Fix
Schedule the next polling iteration in finally (guarded by stop state), so both success and failure paths continue polling.