-
Notifications
You must be signed in to change notification settings - Fork 412
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
Use app context classifier in relayer submitter queues #3385
Conversation
|
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## main #3385 +/- ##
=======================================
Coverage 68.02% 68.02%
=======================================
Files 99 99
Lines 1032 1032
Branches 107 107
=======================================
Hits 702 702
Misses 284 284
Partials 46 46
|
### Description Includes the `app_context` classification in `PendingMessage`, and adds trait methods on `PendingOperation` to require always having such a label on `OpQueue` operations. This is done by reusing the matching list logic from the validator checkpoint labels (#3057). The nice thing is that this enables later support for retrying a group of `OpQueue` operations just by specifying the `app_context` label, without adding any new logic, since these labels are essentially matching list results. One downside to using `app_context` for retries is that the endpoint caller is constrained to only the matching lists defined by the relayer operator - however imo only the relayer operator that should be able to trigger retries. ### Drive-by changes The `OpQueue` type alias is converted to an actual struct, that stores the queue label (for metrics purposes), and also the `IntGaugeVec` metric: the generic group of metrics associated with that queue (basically only `submitter_queue_length` currently). ### Related issues - Fixes #3240 ### Backward compatibility Yes ### Testing Manual, by spinning up a relayer for injective and inevm. Sample metrics, from `--metricAppContexts '[{"name": "injectivelabel", "matchingList": [{"destination_domain": 6909546 }] }, {"name": "inevmlabel", "matchingList": [{"destination_domain": 2525 }] }]'` ``` hyperlane_submitter_queue_length{agent="relayer",app_context="inevmlabel",hyperlane_baselib_version="0.1.0",queue_name="confirm_queue",remote="inevm"} 11 hyperlane_submitter_queue_length{agent="relayer",app_context="inevmlabel",hyperlane_baselib_version="0.1.0",queue_name="prepare_queue",remote="inevm"} 0 hyperlane_submitter_queue_length{agent="relayer",app_context="injectivelabel",hyperlane_baselib_version="0.1.0",queue_name="confirm_queue",remote="injective"} 63 hyperlane_submitter_queue_length{agent="relayer",app_context="injectivelabel",hyperlane_baselib_version="0.1.0",queue_name="prepare_queue",remote="injective"} 13281 ```
Description
Includes the
app_context
classification inPendingMessage
, and adds trait methods onPendingOperation
to require always having such a label onOpQueue
operations. This is done by reusing the matching list logic from the validator checkpoint labels (#3057).The nice thing is that this enables later support for retrying a group of
OpQueue
operations just by specifying theapp_context
label, without adding any new logic, since these labels are essentially matching list results. One downside to usingapp_context
for retries is that the endpoint caller is constrained to only the matching lists defined by the relayer operator - however imo only the relayer operator that should be able to trigger retries.Drive-by changes
The
OpQueue
type alias is converted to an actual struct, that stores the queue label (for metrics purposes), and also theIntGaugeVec
metric: the generic group of metrics associated with that queue (basically onlysubmitter_queue_length
currently).Related issues
Backward compatibility
Yes
Testing
Manual, by spinning up a relayer for injective and inevm. Sample metrics, from
--metricAppContexts '[{"name": "injectivelabel", "matchingList": [{"destination_domain": 6909546 }] }, {"name": "inevmlabel", "matchingList": [{"destination_domain": 2525 }] }]'