MetricsModule: inject DataSourceTaskIdHolder early #16140
Merged
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
This fixes an issue where MSQ ingestion failed if the first monitor in the list is
ServiceStatusMonitor
. Before this change, setting theServiceStatusMonitor
as the first monitor will fail with errors inCliPeon
like belowThe problem is happening when the task file is deserialized in
CliPeon.readTask
. This is the sequence of eventsCliPeon.readTask
uses Jackson to deserialize the taskDataSourceTaskIdHolder
CliPeon.getDataSourceFromTask
andCliPeon.getTaskIDFromTask
.This creates a circular ref since
readTask
is the provider forTask
andCliPeon.getDataSourceFromTask
andCliPeon.getTaskIDFromTask
useTask
as their inputs.However if you set any other monitor first such as
JvmMonitor
, then the injector doesn’t use the providers fromCliPeon
. Jackson is able to bind both datasource and task ID from the task file itself.For now triggering the binding of
DataSourceTaskIdHolder
before any of the monitors are loaded resolves the issue but this does not seem like the right fix. I have not been able to figure out what the correct fix is but I suspect it's a lot deeper than this one-liner.Key changed/added classes in this PR
MetricsModule
This PR has: