fix: race condition when getting iOS inspector port #5544
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Checklist
What is the current behavior?
When running an iOS simulator app, the NativeScript CLI sends an
AttachRequest
notification to the application right after launch. If the runtime hasn't had time to set up the event handler for this notification yet, it's silently lost, and the CLI never gets the port number for debugging. This causes HMR to not work, and worse, the application auto-restarts after a minute. (The console shows the error "NativeScript debugger was not able to get inspector socket port")This seems to be a race condition based on how quickly the iOS runtime sets up its event handler vs. how quickly the CLI sends the
AttachRequest
notification after launching the app. For some reason, I went from not experiencing this issue at all to experiencing it nearly 100% of the time when using the simulator on my Mac. (I haven't tested with an actual device. Also, I'm using the V8 iOS runtime.)What is the new behavior?
I set up a timer to re-send the
AttachRequest
notification once every 5 seconds untilgetDebuggerPort()
either returns or throws an error. In my testing, I was able to resolve it by adding a simple one-second delay before sendingAttachRequest
, but this seems more robust.Fixes/Implements/Closes #3701. (Seems to be the same issue.)