* prototype for class to replace Map<String, AttributeValue)
* safely copy the builder's data
* add the empty constant
* optimization for attributes with a single key/value
* Add an iterator/iterable and some simple tests
* fix animalsniffer complaint
* tests for de-duping and order-independent equality, plus removal of possibly unneeded access methods.
* clean up the sort&filter method a tad
* replace the iterator with a foreach method
* Make the Attributes parameterized by the value type.
* Add basic javadoc
* remove helper class; add a simple test for the builder; make the tests more robust
* Add a varargs method for creating an arbitrary number of key/value pairs.
* static import the check method, for consistency
* Refactor to have an interface and two implementations, with some shared logic.
* fix an accidental rename
* really fix it for real
* add a few more tests
* preserve the `setAttribute` names from existing Span API
* Replace the treemap sorting and filtering with a quicksort and post-filter.
* remove an unneeded list.
* switch to an abstract base class to remove some code duplication
* Updated docs based on feedback.
* Small change to use the builder for the empty implementations.
* Directly fetch AWS resource metadata without depending on heavyweight AWS SDK and allow extension for non-EC2 resources like ECS.
* Set HOST_NAME too
* Cleanups
* Not public
* Update test
* Remove SpanID from sampling parameters
* Generate SpanId only for sampled spans
* Revert "Generate SpanId only for sampled spans"
This reverts commit 5b51eaed88.
* Add public Samplers.emptyDecision(boolean).
This is meant for use by custom Sampler implementations. As of now, you have to use an anonymous inner class or otherwise derive a new class because there is no publicly accessible implementation of Decision.
* Fix build, add unit test.
* Add Samplers.decision(boolean, Map).
Co-authored-by: Bogdan Drutu <bogdandrutu@gmail.com>
* Copy decision attributes, fix comment.
Co-authored-by: Bogdan Drutu <bogdandrutu@gmail.com>
* change Event to an interface with an impl to match
* make TimedEvent implement the Event interface
* don't make copies of already immutable event data
* copy the wrapped event, so as not to hold to user's data
* Separating the B3 logic for Single and Multiple headers
* Refactored to static variables for Single/Multi Headers
* Fixes review comments - javadoc and ctor changes
* exposing B3Propagator via static getters
* Dummy commit to test the build
* Converted the abstract class into interface for injector/extractor
* Expose RandomIdsGenerator for delegation and allow customizing Random.
* Unit tests
* checkNotNull
* More interesting test
* format
* Checkstyle
* requireNonNull
* Revert RandomSupplier
* Format and fuzz
* Refactor the logic to get immutable attributes, links and events
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
* Remove support for null links, never happens
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
* Add tests to verify immutability of the SpanData representation, and remove an extra wrapping of links.
* Add an additional mutability test, and fix a bug with a span that hasn't ended.
* fix a tiny typo
* Return a wrapped span so only the mutable data is copied.
* Add a benchmark for the span pipeline
* tweak the benchmark a bit
* use unmodifiable wrappers around the collections in the wrapper.