[9.1](backport #5858) Handle malformatted JSON in .fleet-agents components field
#5863
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.
What is the problem this PR solves?
Handles a possible error in loading the
model.Agentwhere thecomponentsfield might be invalid JSON or a string (due to another bug). This changes the code to be more defensive, also should do less on parsing the components model when that is not needed.How does this PR solve the problem?
Changes the
componentsfield to be ajson.RawMessagethat does two things. One it stops it from being parsed when themodel.Agentis loaded from elasticsearch, which happens often and will reduce the time it takes to parse this field. Two, it stops that field from erroring to be unmarshalled when it is an invalid format.How to test this PR locally
mage unitTestdoes a great job of covering it.Checklist
[ ] I have made corresponding changes to the documentation[ ] I have made corresponding change to the default configuration files./changelog/fragmentsusing the changelog toolRelated issues
This is an automatic backport of pull request Handle malformatted JSON in
.fleet-agentscomponentsfield #5858 done by Mergify.