Make NewRecorder
a proper singleton
#4210
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.
NewRecorder
cannot be called twice safely because it would result in the same view being registered twice, which always returns an error.The tests work around this by themselves manually unregistering the metrics that
NewRecorder
registers, so an alternative here might be to haveNewRecorder
also return acontext.CancelFunc
to unregister things, or to haveNewRecorder
takectx
so that it can unregister the metrics on context-cancellation.This change simply opts for making
NewRecorder
a proper singleton with async.Once
and private globals for theRecorder
and the possible error, so multiple calls toNewRecorder
return the same singletonRecorder
(or its error).I've updated the tests to clear this new singleton state (as well as continuing to manually unregistering the metrics).
/kind cleanup
Submitter Checklist
As the author of this PR, please check off the items in this checklist:
functionality, content, code)
Release Notes