Fixes#657
With the changes in #667 and #669 to use a plain-old-mutex for
concurrent access of Histogram and MinMaxSumCount aggregators,
the StateLocker implementation is no longer used in the project.
Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>
* Add a key benchmark, optimize SDK SetAttribute
* Use reflect in key.Infer
* Move to separate benchmark file; remove pointer test; remove dead comment
* Run go mod tidy
* Add license header
* Use the reflect scalar accessors
Co-authored-by: Liz Fong-Jones <lizf@honeycomb.io>
* Reimplement histogram using mutex instead of stateLocker
Move existing implementation to histogram_statelocker.go. Implement
benchmarks for single thread and parallel histogram updates comparing
mutex version to stateLocker version
* Drop statelocker implementation and alignment tests, benchmarks
Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>
* Switch MinMaxSumCount to a mutex lock instead of StateLocker
With multiple values being modified for each Update(), a single mutex
lock and non-atomic operations ends up being faster than making each
value update into an atomic operation.
* Remove StateLocker implementation and comparison benchmarks
* Remove field offset tests. No longer required with no atomics.
Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>
* Do not put span context into go context if extraction failed
This causes problems if multiple trace propagators are chained,
because the first propagator in chain may extract a valid span
context, then next propagator will overwrite it with an empty span
context when required headers in supplier are missing.
* Test for clobbering propagators
Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>
* Bump golangci-lint to 1.25
* Skip the "unused" linter when running golangci-lint in --fix mode
This linter seems to provide bogus fix-up information to
golangci-lint, which results in file corruption instead of fixing the
issue. Since we are going to run the linter again anyway, but without
the --fix mode, skip the "unused" linter explicitly for the first run
- it will still have a chance to report errors on the second run.
* add optional server url arg to http client example
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* add Dockerfile to build example http images
Multi-stage Dockerfile with targets for building example http server and
client.
$ docker build --tag the-server --target example-http-server .
$ docker build --tag the-client --target example-http-client .
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* add docker-compose.yml file for running examples
This docker compose configuration file will help a new user to compile
and run the example code quickly. Uses the Dockerfile to build images
with compiled examples.
$ docker-compose build http-server http-client
$ docker-compose up http-server http-client
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* add newline to last message of example http client
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* add optional collector url arg to zipkin client example
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* add Dockerfile target to build zipkin client
For building the example zipkin client:
$ docker build --tag zipkin-client --target example-zipkin-client .
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* add docker compose service to run zipkin examples
Services to run the zipkin client along with a zipkin collector:
$ docker-compose build zipkin-client
$ docker-compose up zipkin-collector zipkin-client
Since the zipkin collector takes a few seconds before it is ready to
receive traces, I added a simple retry loop to the client command.
The collector service exposes port 9411 so user can visit
http//localhost:9411/ to see the trace sent to the collector. Be sure to
search by the trace id logged by the client.
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* Update Dockerfile with AL2 declaration
As described in https://www.apache.org/licenses/LICENSE-2.0#apply
Co-Authored-By: Tyler Yahn <MrAlias@users.noreply.github.com>
* Update docker-compose.yml with AL2 declaration
As described in https://www.apache.org/licenses/LICENSE-2.0#apply
Co-Authored-By: Tyler Yahn <MrAlias@users.noreply.github.com>
* pass server url as flag in example http client
$ ./client -h
Usage of ./client:
-server string
server url (default "http://localhost:7777/hello")
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* pass zipkin url as flag in example zipkin client
$ ./zipkin -h
Usage of ./zipkin:
-zipkin string
zipkin url (default "http://localhost:9411/api/v2/spans")
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* move Dockerfile and docker-compose.yml into example dir
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* add Dockerfile and docker-compose.yml for zipkin example
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* update zipkin example README.md
With instructions on how to use docker-compose to run the example.
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* add http example README.md
With instructions on how to use docker-compose to run the example.
Signed-off-by: Andrew Hsu <xuzuan@gmail.com>
* Update example/http/Dockerfile WORKDIR
Co-Authored-By: Krzesimir Nowak <qdlacz@gmail.com>
* Update example/http/Dockerfile RUN go install
Co-Authored-By: Krzesimir Nowak <qdlacz@gmail.com>
* Update example/http/Dockerfile RUN go install
Co-Authored-By: Krzesimir Nowak <qdlacz@gmail.com>
* Update example/zipkin/Dockerfile WORKDIR
Co-Authored-By: Krzesimir Nowak <qdlacz@gmail.com>
* Update example/zipkin/Dockerfile RUN go install
Co-Authored-By: Krzesimir Nowak <qdlacz@gmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Krzesimir Nowak <qdlacz@gmail.com>
Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>