- Notifications
You must be signed in to change notification settings - Fork1.1k
Respect timeout when cancellation token is provided#2207
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:master
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
JakubKopys commentedOct 14, 2025
@dotnet-policy-service agree |
chkr1011 commentedOct 17, 2025
I understand the issue and the change look reasonable to me. The HTTP client in .NET behaves in the same way. The shorter timeout (or cancellation token) will cancel the operation. The only thing which I am thinking about is the breaking change you already mentioned. When I am not wrong the breaking change will only affect users which cancel the passed cancellation token LATER than 100 seconds (default timeout in options, or custom value). Then the timeout will happen earlier as expected. |
Uh oh!
There was an error while loading.Please reload this page.
Context
Our code runs the MQTT Client in a Background Service.
Problem
Providing any CancellationToken to any of those methods -
ConnectAsync,PingAsync,DisconnectAsync,SubscribeAsync, andUnsubscribeAsyncdisregards theTimeoutoption.In Background Services, we always provide the cancellation token, so if we are not aware of this behaviour, those methods will never timeout, disregarding the
WithTimeoutorTimeoutcompletely.I do acknowledge this is partially mentioned in the Sample for timeouts, though, and it is recommended to use a linked token source.
I found it confusing, so I'm suggesting a change.
Solution
Instead of disregarding the Timeout, those operations should always consider it and link the cancellation sources.
I'm also aware this is a breaking change, as it'd cause Timeouts for existing code that depends on overwriting this with a linked token with an expiry.
Thank you for considering this contribution. I appreciate any feedback or suggestions for change. Alternatively, we could consider improving the sample and/or documentation.