-
-
Notifications
You must be signed in to change notification settings - Fork 335
Wait up to 1s for pending requests before destroy() #194
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
Conversation
If the user calls: client.stop() client.destroy() We should ensure that the final 'stopped' message reaches the tracker server, even though the client will not get the response (because they destroyed the client and no more events will be emitted). If there are pending requests when destroy() is called, then a 1s timer is set after which point all requests are forcibly cleaned up. If the requests complete before the 1s timer fires, then cleanup happens right away (so we're not stuck waiting for the 1s timer). So, destroy() can happen one of three ways: - immediately, if no pending requests exist - after exactly 1s, if pending requests exist and they don't complete within 1s - less than 1s, if pending requests exist and they all complete before the 1s timer fires
|
cc @CraigglesO |
CraigglesO
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IT WORKS!!!! I tested it using the current master branch of torrent discovery and I get an EVENT 3 back. Love it.
|
Since this is a large change, it would be nice to get a code review from one of the other maintainers before merge. |
|
Do you have a fax on how to become a contributor? |
|
@CraigglesO Yes, you can read about that here: https://github.com/feross/bittorrent-tracker/blob/master/CONTRIBUTING.md#project-governance 👍 |
|
This PR has been open a few days so I'm going to merge it now. Post-merge feedback is still welcome. |
If the user calls:
client.stop()
client.destroy()
We should ensure that the final 'stopped' message reaches the tracker
server, even though the client will not get the response (because they
destroyed the client and no more events will be emitted).
If there are pending requests when destroy() is called, then a 1s timer
is set after which point all requests are forcibly cleaned up. If the
requests complete before the 1s timer fires, then cleanup happens right
away (so we're not stuck waiting for the 1s timer).
So, destroy() can happen one of three ways:
within 1s
the 1s timer fires