Remote Configuration Tracer Extension 3 - Remote Configuration Client capabilities#3186
Conversation
This comment has been minimized.
This comment has been minimized.
312121a to
464290f
Compare
This comment has been minimized.
This comment has been minimized.
8d073df to
8557cf4
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
758ae6c to
e7b0eb9
Compare
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
| if (enableSecurity == true) | ||
| { | ||
| await logEntryWatcher.WaitForLogEntry("AppSec Disabled"); | ||
| await Task.Delay(1500); |
There was a problem hiding this comment.
I'm unsure why this is needed, but it seems to make the CI a lot more stable (it always passes locally).
My initial thought that it was dues to the async rejit request seems to be wrong as the rejitted methods are only needed for handling the body.
andrewlock
left a comment
There was a problem hiding this comment.
I haven't reviewed yet, just saw the comment and implementation for GetInitializedInstance, and got a little worried. The whole Initialization of RCM needs to be written to happen inside of TracerManagerFactory instead of as it is currently in Instrumentation. This is ongoing work by the LiveDebugger team I think. The biggest change is we won't have a global singleton RCM instance, instead it will hang off TracerManager.Instance like all the other singleton services we have (which need to respond to tracersettings changes etc). Maybe this is ok for now, but just want to make you aware
e7b0eb9 to
2a787a8
Compare
Thanks, I something like |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Hmmm, that's a bit worrying 🤔 The trouble is,
I think this is what we should look into... Do you have any examples of how this has caused issues? Hopefully there's something there we can address |
This comment has been minimized.
This comment has been minimized.
1871f90 to
738d2d5
Compare
OmerRaviv
left a comment
There was a problem hiding this comment.
I only reviewed the parts that effect Live Debugger, so... not much :)
Benchmarks Report 🐌Benchmarks for #3186 compared to master:
The following thresholds were used for comparing the benchmark speeds:
Allocation changes below 0.5% are ignored. Benchmark detailsBenchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AppSecBodyBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AspNetCoreBenchmark - Unknown 🤷 Same allocations ✔️Raw results
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️Raw results
|
Code Coverage Report 📊⛔ Merging #3186 into master will will decrease line coverage by
View the full report for further details: Datadog.Trace Breakdown ⛔
The following classes have significant coverage changes.
View the full reports for further details: |
Summary of changes
RCTE3 allows a library to advertise what remote config features (capabilities) that it supports.
Reason for change
It will be helpful for clients to be able to see in the interface if they can make a change to a services via remote config or not.
Implementation details
The implementation is mostly straight forward. The only complicated part is a reference to the
RemoteConfigurationManagerclass is required at startup and the initialization order doesn't seem to be deterministic. To get round this I wrote a small mechanism that checks ifRemoteConfigurationManageris initialized and queues the request for a reference if it isn't. We may need a generalization similar to this, for other services, in the future.Test coverage
Tests piggy back on the "toggle" tests for activating and deactivating ASM via remote config. This allows us to check the capabilities are correctly sent with each request.