* Don't auto-start the IntervalMetricReader in the constructor.
* a little more protection around the possibility of double-starting the IMR
* add a test that verifies we only start once
* tweak the values to see if CI likes it better
* make the test simpler for CI
* try a little bit longer time?
* change the test to make an assertion on a passed-in scheduler.
* Add a new module for extensions to the tracing APIs.
Includes one simple possible example.
* formatting
* rename and add javadoc
* Clean up & simplify based on feedback
* rename the module to just incubator
* Move to a package named more like the core api trace package.
* repackage to match the module
* [BugFix]shut down exporter after it exports the remaining metrics
* Remove testing log
* Use CompletableResultCode to manage metrics forceflush
* fix bad format
* Adjust the logic to never return null from forceFlush()
* Add doRun() method for IntervalMetricReader.Exporter and return CompletableResultCode
* refine code to remove duplicate code
Description:
This PR adds two benchmarks.
1. Current benchmark executs forceFlush() on every loop and creates a bottleneck which results in not stressing batch span processor. Current benchmark only
measures throughput which is not helpful on its own since number of spans getting exported is also important. BatchSpanProcessorMultiThreadBenchmark is created to address this issue.
2. Measuring CPU usage of exporter thread is also important, but the current benchmarks consumes as much CPU as possible which makes the measurement not meaningful.
To maintain a steady state, this PR creates a benchmark that generates 10k spans per second per thread. One would need to attach a profiler such as yourkit or JProfiler
to the benchmark run to understand the processor's CPU usage. BatchSpanProcessorCpuBenchmark is created for this purpose.
This PR also fixes a bug in calculating number of dropped/export spans. Earlier dropped and exported spans were actually counting the other one.
This PR also fixes a big in calculating number of dropped/export spans. Earlier dropped and exported spans were actually counting the other ones.
* add histogram aggregator
* implement DoubleHistogramAggregator.toMetricData
* pass temporality instead of a boolean for the creation of histogram aggregator
* remove ImmutableDoubleArray
* remove ImmutableLongArray
* fixup! remove ImmutableDoubleArray
* simplify the implementation of DoubleHistogramAggregator
* accumulate value with configured boundaries
* use nanoseconds as timeunit
* update benchmark mode
* List<Double> instead of double[] for histogram factory
* update var names
* switch to using assertj
* simpler boundary check
* simplify multi-threaded test
* add histogram related metric data types
* update doc of histogram boundaries to make it compatible with latest change of ot-proto
* remove unnecessary helper
* simplify the create interface, add doc and validations
* Move traceidrandom
* Make BigEndianEncoding public-internal to use for Android compatibility.
* Rename BigEndianEncoding to sound less useful if accidentally imported.
* Obfuscate the GlobalOpenTelemetry instance.
This is to prevent people from casting to the SDK implementation.
Resolves#2788
* Add some more tests for the global obfuscation
* autoconfigure
* Finish
* Refactor
* Fix OsResource to use empty
* Fix BeanstalkResource to use empty
* Fix ResourceTest to use empty
* Fix Ec2Resource to use empty
* Fix EcsResource to use empty
* Fix ProcessRuntimeResource to use empty
* Fix ProcessRuntimeResource to use empty
* Fix EksResource to use empty
* Fix LambdaResource to use empty
* Fix ProcessResource to use empty
Co-authored-by: Bogdan Drutu <bogdandrutu@gmail.com>
Co-authored-by: Bogdan Drutu <lazy@splunk.com>
* Add VERSIONING document and make sure all internal packages have doc about internalness.
* Make internal package caveat even stronger
* Users must not use internal package.