[6.1] Backport initial metrics enablement #3718
Merged
+17
−3
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 backports 66a67bc from #3575 to 6.1.
It's possible to start an application with the M.D.S EventSource already enabled, even before the static constructor for SqlClientEventSource has run. In this situation, the constructor for
Logwill runOnEventCommandwith an enablement command before it finishes executing. This enablement tries to callMetrics.EnableEventCounters, but this hasn't been initialized yet - it relies on theSqlClientEventSourceinstance.To break this cycle, we record the desired startup state of the metrics in this case, and pass it to the
SqlClientMetricsconstructor.Issues
Fixes #3711.
Testing
The timing makes this difficult to test. In the end, I built a test application locally, referenced 6.1.2 and ran
This allowed me to reproduce the problem: the counters appear in 6.0, don't appear in 6.1.2, appear again in 7.0-preview2 and now also appear in my local build.
Could someone run CI please? @empowerRob you should be able to verify with the nupkg build artifact.