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
This adds a callback to update the connection config when reconnect is called.
Although there is an example on how to capture 403 connection errors and fresh a uri token, this means you don't get to use the reconnect_after_msec logic built into reconnect.
While there are ways to use reconnect by updating channel_config, you run into an issue where the connection configuration is updated before the Process.send_after in reconnect, which can have a side effect of the connection configuration expiring if the reconnect delay is too long.
I'm unsure about this. reconnect/1 is intended for the connection being closed due to transient failures like if the server is restarting or unavailable briefly. If you need to change configuration, for example the token refreshing example in the docs, you shouldn't need retry-backoff for reconnecting. In cases where you do want to wait before reconnecting I believe you can do that with Process.send_after/4 and calling connect from within Slipstream:handle_info/2
This PR was driven because of how nerves_hub_link requires an auth token to be refreshed if the token being used is older than the 'max-age' set by the server, which is currently set to 1 minute in nerves_hub_web. Our default retry back-off can exceed this as we add some random jitter so that devices in the field don't all try to reconnect simultaneously.
If the server restarts or is briefly unavailable, using the retry back-off built into Slipstream and not having to replicate this logic ourselves is preferable, as this is primarily focused on mitigating against a thundering heard.
This API would allow us to simplify our code and use a cleaner API (I'm biased of course)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This adds a callback to update the connection config when
reconnectis called.Although there is an example on how to capture
403connection errors and fresh a uri token, this means you don't get to use thereconnect_after_mseclogic built intoreconnect.While there are ways to use
reconnectby updatingchannel_config, you run into an issue where the connection configuration is updated before theProcess.send_afterinreconnect, which can have a side effect of the connection configuration expiring if the reconnect delay is too long.