You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a test that involves net.Server socket handle transferring functionality (the socket is passed to a forked process). What the test does is:
Creates a TCP server listening on port 8889.
Creates a forked process.
Passes a created TCP server handle to a forked process. The process listens for the 'connection' event on received handle. Upon connection it sends a 'Hello!' message to a connected socket and closes the connection.
Connects with a TCP client to port 8889 and awaits data.
Ensures that the data is 'Hello!', closes the server and kills forked process.
The test fails quite often in an interesting way: a client receives a 'connect' callback, but the forked process does not receive a 'connection' callback, and the test fails with timeout.
You don't close the server handle after it's been received by the child, do you? If the server socket is alive in both processes, an incoming connection can end up in either one (and that's by design, it's not a bug.)
I have a test that involves net.Server socket handle transferring functionality (the socket is passed to a forked process). What the test does is:
The test fails quite often in an interesting way: a client receives a 'connect' callback, but the forked process does not receive a 'connection' callback, and the test fails with timeout.
I have extracted all my project-related stuff from that test and came up with this small project that reproduces the issue: https://github.com/weekens/nodejs-handle-issue
You can launch the test with the following:
The test is repeated 100 times, but on my machine few single launches are enough to reproduce the issue.
The tests produce debug ouput to make it more clear what's happening there.
If I'm doing something wrong in this test - please let me know.
The text was updated successfully, but these errors were encountered: