Repository navigation
feat: propagate CancellationToken throughout the backend - #378
Merged
Merged
Conversation
Thread cancellation tokens from controllers, SignalR hubs, auth handlers, the LiveControlGateway receive loop and cron jobs down into every service and EF Core/HttpClient/HybridCache call that accepts one. - Services (device, OTA, configuration, control sender, webhook, device update, account, API token, session create/logout) take a token. - Hubs use Context.ConnectionAborted; auth handlers use RequestAborted. - Cron jobs use the host's ApplicationStopping token; Execute() keeps no parameters so Hangfire job signatures are unchanged. - Email outbox delivery stops on shutdown and always records a send's outcome once the email has gone out. - Add .editorconfig disabling the primary-constructor suggestion.
…token-propagation # Conflicts: # Common/Hubs/PublicShareHub.cs # Common/Services/ControlSender.cs # Common/Services/IControlSender.cs
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 31 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
hhvrc
added a commit
that referenced
this pull request
Nov 4, 2026
#378 threaded the request/socket CancellationToken into every write. A client disconnect could then abort a flow halfway through: a commit could succeed in Postgres while CommitAsync threw, which skipped the post-commit work, and non-transactional sequences were left half-done. Keep the token for reads, validation and Turnstile. Writes now run uncancelled: - ReportTokens: the token delete, report row and admin webhook can no longer be split, so a deletion is never left unrecorded. - Logout: the session is always deleted. Before, a cancelled audit write left the session valid on the server. - Session creation: the Login audit entry always follows the Redis insert. ISessionService / CreateSession no longer take a token (LoginV2, OAuth HandOff, SignupFinalize). - Transactional services (Account, ApiToken, OAuthConnection, AutomationToken admin, CreateShareInvite, ControlSender): begin, save, commit and rollback no longer take the token, so post-commit work such as the session purge on deactivation and the outbox nudge still runs. - AutomationTokenService: the use audit is no longer cancellable. - ConfigurationService: the cache update after a DB save is no longer skipped, so config doesn't go stale. - OtaService: hub status writes survive the hub disconnecting right after reporting. - IDeviceUpdateService: dropped the token. These are post-write notifications.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Thread cancellation tokens from controllers, SignalR hubs, auth handlers,
the LiveControlGateway receive loop and cron jobs down into every service
and EF Core/HttpClient/HybridCache call that accepts one.
update, account, API token, session create/logout) take a token.
parameters so Hangfire job signatures are unchanged.
outcome once the email has gone out.