op-challenger: cleanup service lifecycle, improve subscription ctx usage #8235
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.
Description
Clean up the challenger service lifecycle:
main
, and attach it as value toctx
, for the app lifecycle to utilizegame.Service
into a service with a lifecycle; explicitStart
/Stop
methods.game.Service
close all its initialized resources.Helper
doesn't need to maintain a channel and context, and can just stop the challenger.Improve related op-service utils:
WatchHeadChanges
: unsubscribe signals are now handled in parallel to the subscription tasks, and cancel the context internally. This way an "unsubscribe" really is an unsubscribe, and we don't also have to keep track of a long-running context that has to be closed prior to unsubscribing. Thectx
attribute is only used for the duration of the call that creates the subscription, and does not affect the subscription after that.PollBlockChanges
to also handle unsubscribe signals like thatClose()
method to the simple tx-manager, so services can shut down the underlying RPC client connection.With the above op-service fixes:
Tests
No functionality changes, just cleanup. Open for suggestions to add tests where previously missing.
Metadata
Part of #7671