1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2025-01-26 03:52:03 +02:00

594 Commits

Author SHA1 Message Date
Aaron Clawson
7153ef2dc2
Add HTTP/JSON to the otlp exporter (#1586)
* Add HTTP/JSON to the otlp exporter

Co-Authored-By: Roy van de Water <72016+royvandewater@users.noreply.github.com>

* PR fixup

Co-authored-by: Roy van de Water <72016+royvandewater@users.noreply.github.com>
2021-03-05 09:59:09 -08:00
Tyler Yahn
62e2a0f766
Unexport the simple and batch SpanProcessors (#1638)
* Unexport the simple and batch SpanProcessors

* Update changes in changelog
2021-03-05 08:08:29 -08:00
Anthony Mirabella
bb4c297eb3
Pre release v0.18.0 (#1635)
* Prepare for releasing v0.18.0

* Update CHANGELOG for v0.18.0 release

* Update CHANGELOG.md

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-03-03 14:40:00 -05:00
Tyler Yahn
e25503a00e
Add compatibility tests to CI (#1567)
* Add compatibility tests to CI

* Increase timeout to 60s

Some of the aggregator tests are running just over 30 seconds when
testing on Windows. Bump this to allow for it.

* Remove cache setup jobs

Having a unified job setup the cache when none exists so packages are
only downloaded once is ideal, but these steps are taking too long. In
some situations they are doubling the run time. Remove them and prefer
to have multiple downloads when dependencies change.

* Add changes to changelog

* Remove mod-download target from Makefile

Unused now that the cache jobs are removed.

* Add compatibility testing table to changelog

* Add change about precommit to changelog

* Update README

* Correct examples target in lint job
2021-03-01 08:38:23 -08:00
Injun Song
1519d95982
Use reasonable interval in sdktrace.WithBatchTimeout (#1621)
* Use reasonable interval in sdktrace.WithBatchTimeout

This patch resolves #1564.

* Add pull request ID to CHANGELOG.md
2021-03-01 08:03:55 -08:00
Trevor Foster
7d4496e0fe
Pass metric labels when transforming to gaugeArray (#1570)
* Pass metric labels when transforming to gaugeArray

* Update CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

* Add label requirements to transformed metric assertions

* Fix fmting

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-02-28 09:53:41 -08:00
Tyler Yahn
e499ca86b7
Fix validation for tracestate with vendor and add tests (#1581)
* Fix validation for tracestate with vendor

* Add changes to changelog
2021-02-25 07:36:37 -08:00
Tyler Yahn
43886e52f3
Make timestamps sequential in lastvalue agg check (#1579)
* Make timestamps sequential in lastvalue agg check

* Set PR number in changelog

* Fix location of sleep

The lastvalue timestamp is set on update. Correct the location of the
sleep to bridge the update of the two different aggregators.
2021-02-25 07:20:38 -08:00
Punya Biswal
37688ef676
revent end-users from implementing some interfaces (#1575)
"otel/exporters/otlp/otlphttp".Option
"otel/exporters/stdout".Option
"otel/oteltest".Option
"otel/trace".TracerOption
"otel/trace".SpanOption
"otel/trace".EventOption
"otel/trace".LifeCycleOption
"otel/trace".InstrumentationOption
"otel/sdk/resource".Option
"otel/sdk/trace".ParentBasedSamplerOption
"otel/sdk/trace".ReadOnlySpan
"otel/sdk/trace".ReadWriteSpan

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-02-24 10:03:35 -08:00
Suraj Chafle
85e696d20b
Updating documentation with an working example for creating NewExporter (#1513)
* Updating documentation with an working example for creating NewExporter

* Updated Changelog

* Moved examples in README to testing example

* ExampleTest shouldn't log anything if working as expected

* Fixing the lint

* Fixing the lint

* Review comments

* Changes done moved to Fixed section of Changelog
2021-02-24 09:50:17 -08:00
Tyler Yahn
562eb28b71
Unify the Added sections of the unreleased changes (#1580) 2021-02-24 12:27:34 -05:00
Tyler Yahn
c4cf1aff6b
Fix Windows build of Jaeger tests (#1577)
* Fix Windows build of Jaeger tests

The Jaeger tests use the low-level syscall package. The Windows specific
function called in that package has a different function signature than
the unix version. Add a windows specific file using the build flags to
isolate this OS specific functionality.

* Add changes to changelog

* Blind succeed to account for unimplemented functionality on Windows
2021-02-24 07:01:29 -08:00
Tyler Yahn
4a163beaa1
Fix stdout TestStdoutTimestamp failure with sleep (#1572)
* Fix stdout TestStdoutTimestamp failure with sleep

Ensure the test condition is valid by introducing minimal sleep
durations before and after a timestamp is measured.

Resolves #1571

* Add changes to changelog

Co-authored-by: Anthony Mirabella <a9@aneurysm9.com>
2021-02-23 14:38:23 -05:00
Punya Biswal
bd4701eb93
Stagger timestamps in exact aggregator tests (#1569)
* Stagger timestamps in exact aggregator tests

Fixes #1559.

* Missed one

* Yield while you wait

* Just sleep for a teeny tiny bit

* Oops, wrong PR in Changelog

* Make sure that *some* time passes

* Keep time comparisons relaxed
2021-02-23 14:30:47 -05:00
Hussein Al Abry
b94cd4b249
add code attributes to semconv package (#1558)
* add code attributes to semconv package

* update changelog

* update comment for code semconv attributes

Adds a full-stop at the end of the comment.

Co-authored-by: Anthony Mirabella <a9@aneurysm9.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-02-22 13:42:52 -08:00
Punya Biswal
d7aff47338
Vendor Thrift dependency (#1551)
* Vendor Thrift dependency

* Fix build

* Changelog entry

* Ignore third_party for coverage purposes

* Re-run tests

* Re-run tests

* Re-run tests

* Re-run tests

* Relax time comparisons

Fixes #1559.

Some unit tests were flaking in CI because they expected the timestamp
to advance during a test, when it's possible for it to be unchanged
instead. This change switches the offending "<" comparisons to "<=".

* Re-run tests

* Relax more time comparisons

* Re-run tests

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-02-19 13:12:35 -05:00
Sam Xie
298c5a142f
Update span limits to conform with OpenTelemetry specification (#1535)
* Change the default span limit values to 128

* Rename and move MaxEventsPerSpan, MaxAttributesPerSpan, MaxLinksPerSpan into SpanLimits

* Add AttributePerEventCountLimit and AttributePerLinkCountLimit

* Update CHANGELOG

* Apply suggestions from code review

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

* Discard over limited attributes of links in `span.addLink`

* Change the type of droppedAttributeCount to int64

* Fix tests

* Fix label -> attribute package rename from merge

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Tyler Yahn <codingalias@gmail.com>
2021-02-18 11:31:35 -08:00
Punya Biswal
ecf65d7968
Rename otel/label -> otel/attribute (#1541)
* Rename otel/label -> otel/attr

Leave the imported name alone, to avoid a large diff and conflicts

* Better import comment

* Update CHANGELOG.md

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

* otel/attr -> otel/attribute

* Missed the changelog entry

* Get rid of import renaming

* Merge remaining conflicts

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Anthony Mirabella <a9@aneurysm9.com>
2021-02-18 12:59:37 -05:00
Anthony Mirabella
1b5b662136
Remove resampling on span.SetName (#1545)
The spec makes it optional to attempt resampling when changing the name
of a span and we're not sure whether it can be done in an appropriate
manner, so it's best to not do it at all for now.  We can try again
later if we find a good way to do it.
2021-02-18 09:49:10 -08:00
Kacper Stasik
8da5299621
fix: grpc reconnection (#1521)
* fix: grpc reconnection fixed

* chore: changelog update

* fix: grpc reconnection issue - red test

* fix: grpc reconnection #1524

* fix: grpc reconnection issue cleanup
2021-02-17 15:19:23 -05:00
Punya Biswal
3bce9c97f8
Add Keys() method to propagation.TextMapCarrier (#1544)
...and propagation.HeaderCarrier to adapt http.Header to this interface.

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-02-17 08:04:49 -08:00
Punya Biswal
0b1a1c7237
Make oteltest.SpanRecorder into a concrete type (#1542)
* Make oteltest.SpanRecorder into a concrete time

* Fixes

* Fix PR #

* Re-run

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-02-17 07:31:59 -08:00
Daniil Rutskiy
7de3b58ce9
Remove extra labels types (#1314)
* Remove extra labels types

Remove the following labels types: INT32, UINT32, UINT64
and FLOAT32.

Fix all extra labels types occurrences in the project.

Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com>

* Update CHANGELOG.md

Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com>

* Delete unused helpers

Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com>

* Convert passed values into remaining types

Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com>

* Clarify func description

* Fix uint64 convertion

Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com>

* Fix uint conversion

Signed-off-by: Daniil Rutskiy <dstdfx@gmail.com>

* Update OTLP exporter label types

Co-authored-by: Tyler Yahn <codingalias@gmail.com>
2021-02-16 16:23:58 -08:00
ET
8fae0a644a
Create resource.Default() with required attributes/default values (#1507)
* Create resource.Default() with required attributes/default values

Add metric controller and tracer provider tests for resources

* Updated CHANGELOG

* PR comments

+ some small CHANGELOG PR addition, rewording
+ change default resource servicename to `unknown_service:go` (this
matches the Java codebase which uses `unknown_service:java`)
2021-02-15 12:28:37 -08:00
Tyler Yahn
76f9342277
Release v0.17.0 (#1534)
* Prepare for releasing v0.17.0

* Update CHANGELOG
2021-02-15 10:48:14 -08:00
Punya Biswal
9b242bc401
Organize API into Go modules based on stability and dependencies (#1528)
* Add a tool to auto-generate replace directives

* Auto-generated changes from previous commit

* Create new modules required for trace release

* otel/metric
* otel/trace
* otel/oteltest
* otel/sdk/export/metric
* otel/sdk/metric

Relates to #1467

* Move metric-related public API out of otel/ pkg

Move GetMeterProvider, Meter and SetMeterProvider to new package
otel/metric/global in the otel/metric module.

This will allow otel/ module to be released as v1.0.

* Include PR references in CHANGELOG

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

* Check for root dir

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-02-12 08:23:51 -08:00
Tyler Yahn
6b340501b3
Update default branch name (#1505)
* Update README master branch URL to main

* Remove master branch from workflow triggers

The master branch has been renamed to main.

* Add changes to CHANGELOG

* Rename other projects default branch

All of OpenTelemetry is moving to rename `master` to `main`, this
updates all other URLs for those projects.

Co-authored-by: Anthony Mirabella <a9@aneurysm9.com>
2021-02-04 11:13:25 -08:00
ET
1952d7b6af
Reverse order of attribute precedence when merging two Resources (#1501)
* Reverse order of attribute precedence when merging two Resources

This reflects a change in the specification itself.
https://github.com/open-telemetry/opentelemetry-specification/pull/1345

* Resolves #1500

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-01-29 12:50:55 -08:00
Joshua MacDonald
c56227771d
Histogram aggregator functional options (#1434)
* Add a Config/Option for histogram

* Just one option here

* Test fixes

* Support and test int64 histograms

* Changelog

* Lint

* Un-export three things.
2021-01-15 18:29:02 -05:00
Tyler Yahn
fe363be399
Move Span Event to API (#1452)
* Move Span Event to API

* Add changes to CHANGELOG
2021-01-14 09:07:25 -08:00
Anthony Mirabella
0aadfb27bc
Prepare release v0.16.0 (#1464)
* Prepare for releasing v0.16.0

* Prepare CHANGELOG for v0.16.0 release

Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com>
2021-01-13 20:44:06 -05:00
Joshua MacDonald
207587b6ab
Metric histogram aggregator: Swap in SynchronizedMove to avoid allocations (#1435)
* Move emptyState() allocations outside lock

* Add more testing

* Re-comment; add CHANGELOG

* Add CHANGELOG PR number

* Update CHANGELOG.md

Co-authored-by: Sam Xie <xsambundy@gmail.com>

Co-authored-by: Bogdan Drutu <lazy@splunk.com>
Co-authored-by: Sam Xie <xsambundy@gmail.com>
Co-authored-by: Anthony Mirabella <a9@aneurysm9.com>
2021-01-13 20:21:28 -05:00
Sam Xie
c29c6fd1ad
Shutdown underlying span exporter while shutting down BatchSpanProcessor (#1443)
* Fix BatchSpanProcessor does not shutdown underlying span exporter

* Update CHANGELOG

* Fix tests

* Update CHANGELOG.md
2021-01-13 20:14:03 -05:00
Joshua MacDonald
dfece3d2b9
Combine the Push and Pull metric controllers (#1378)
* Push->basic

* Repackage

* Rename away from push

* Make exporter optional; export from a separate goroutine

* Move pull_test into controller_test

* Precommit pass

* New OTLP/Prom example

* Precommit

* Fix the example

* Shorten the example

* Test starting controller w/o exporter

* Test export timeout

* Remove ancient example & lint

* go.mod revert & tidy

* Comments

* Tidy a diff

* Tidy a diff

* Move export kind selector in the new example

* Split this test into its original parts

* Reduce diff size

* Changelog

* Remove extra Add/Done pair

* Remove unused stopCh param; document the Stop behavior

* Typo

* Use ctx

* Missed v0.15

* Apply PR feedback

* Precommit pass

* 0.14 -> 0.15 in new file

* Remove diff chunk markers

* Fix OTLP example

* Upstream

* dashpole comments

* aneurysm9 feedback

* Tidy go.sum
2021-01-13 17:07:44 -05:00
Anthony Mirabella
74deeddd26
Handle tracestate in TraceContext propagator (#1447)
* TraceContext propagator now handles `tracestate`.

Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com>

* Prevent invalid tracestate from invalidating traceparent.

Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com>

* Fail tests early if unable to construct expected TraceContext

Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com>
2021-01-12 11:12:14 -08:00
Joshua MacDonald
49f699d657
Remove Quantile aggregation, DDSketch aggregator; add Exact timestamps (#1412)
* Remove quantile definition

* Complete removal of Quantile-related function

* Comment in selector/simple/simple.go

* Remove 'quantile' in mmsc

* Rename array->exact

* Update changelog

* Add PR number

* Rename exact benchmark

* New test for exact timestamps

* Add timestamp tests

* More test

* From feedback

* Apply suggestions from code review

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

* Samples->Points

* Rename

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-01-12 10:19:13 -08:00
Eundoo Song
9c949411ce
Rename internal/testing to internal/internaltest (#1449) 2021-01-12 08:56:16 -08:00
Krzesimir Nowak
8d80981465
Move gRPC driver to a subpackage and add an HTTP driver (#1420)
* Move grpc stuff to separate package

* Drop duplicated retryable status code

* Set default port to 4317

This is what the specification says for both gRPC and HTTP.

* Document gRPC option type

* Add an HTTP protocol driver for OTLP exporter

Currently it supports only binary protobuf payloads.

* Move end to end test to a separate package

It also adds some common code mock collectors can use. This will be
useful for testing the HTTP driver.

* Move export data creators to otlptest

It also extends the one record checkpointer a bit. This will be useful
for testing the HTTP driver.

* Add an HTTP mock collector and tests for HTTP driver

* Update changelog

* Do not depend on DefaultTransport

We create our own instance of the transport, which is based on
golang's DefaultTransport. That way we sidestep the issue of the
DefaultTransport being modified/overwritten. We won't have any panics
at init. The cost of it is to keep the transport fields in sync with
DefaultTransport.

* Read the whole response body before closing it

This may help with connection reuse.

* Change options to conform to our style guide

* Add jitter to backoff time

* Test TLS option

* Test extra headers

* Fix a comment

* Increase coverage

* Add a source of the backoff strategy
2021-01-11 22:55:24 -05:00
Azfaar Qureshi
0682db1e23
Adding Security Workflows to GitHub Actions (2/2): gosec workflow (#1429)
* adding gosec gha workflow

* removing PR and commit triggers

* adding cronjob

Co-authored-by: Azfaar Qureshi <azfaarq@amazon.com>
2021-01-06 12:06:16 -08:00
Azfaar Qureshi
11f732b85c
Adding Security Workflows to GitHub Actions (1/2): codeql workflow (#1428)
* adding codeql workfklow

* removing PR and commit triggers

* updating changelog

* removing push trigger

Co-authored-by: Azfaar Qureshi <azfaarq@amazon.com>
2021-01-06 11:54:09 -08:00
Andrei Ozerov
40f1c0039d
Add Tracestate into the SamplingResult struct (#1432)
* Add Tracestate into the SamplingResult struct

Add `trace.Tracestate` field into the SDK `trace.SamplingResult` struct.

Use ParentContext from SamplingParameters to return Tracestate in
`traceIDRatioSampler`, `alwaysOnSampler` and `alwaysOffSampler`.

Add a new test to check that Tracestate is passed.

* Updated CHANGELOG.md for #1432 PR

Added changes description for #1432.

* Update sdk/trace/sampling_test.go

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2021-01-06 11:09:48 -08:00
Joshua MacDonald
fe9d1f7ec5
Use uint64 Count consistently in metric aggregation (#1430)
* Use uint64 Count consistently

* Number
2021-01-05 23:17:20 -08:00
Sam Xie
5c9221cf53
Unify endpoint API that related to OTel exporter (#1401)
* Rename `otlp.WithAddress` to `otlp.WithEndpoint`

* Unify the term of the endpoint from exporter

* Update CHANGELOG

* Update example/otel-collector/main.go

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

* Switch to the full word collector

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Tyler Yahn <codingalias@gmail.com>
2020-12-29 11:15:57 -08:00
Tyler Yahn
2def8c3db0
Add Versioning Documentation (#1388)
* Initial versioning documentation

* Add changes to changelog

* Remove leftover goals cruft

* Language fixes

* Add contrib policy

* Apply suggestions from code review

Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>

* Add info on rc precedence in example

* Rename metrics to metric

* Add sentence about how modules become stable

* Update VERSIONING.md

Co-authored-by: Krzesimir Nowak <qdlacz@gmail.com>

Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>
Co-authored-by: Krzesimir Nowak <qdlacz@gmail.com>
2020-12-29 10:34:46 -08:00
Krzesimir Nowak
38e76efe99
Add a split protocol driver for otlp exporter (#1418)
* Add a split protocol driver

This is a wrapper around two other protocol drivers, so it makes it
possible to send traces using a different protocol than the one used
for metrics.

* Add an example and tests for multi GRPC endpoint driver

* Update changelog

* Document the split driver
2020-12-22 09:21:45 -08:00
Matej Gera
439cd31389
Add TraceState to SpanContext in API (#1340)
* Add TraceState to API

* Add tests for TraceState

* Update related tests

- stdout exporter test
- SDK test

* Update OTLP span transform

* Update CHANGELOG

* Change TraceState to struct instead of pointer

- Adjust tests for trace API
- Adjust adjacent parts of codebase (test utils, SDK etc.)

* Add methods to assert equality

- for type SpanContext, if SpanID, TraceID, TraceFlag and TraceState are
equal
- for type TraceState, if entries of both respective trace states are
equal

Signed-off-by: Matej Gera <matejgera@gmail.com>

* Copy values for new TraceState, adjust tests

* Use IsEqualWith in remaining tests instead of assertion func

* Further feedback, minor improvements

- Move IsEqualWith method to be only in test package
- Minor improvements, typos etc.

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2020-12-21 13:11:48 -08:00
Krzesimir Nowak
35215264dc
Split connection management away from exporter (#1369)
* Split protocol handling away from exporter

This commits adds a ProtocolDriver interface, which the exporter
will use to connect to the collector and send both metrics and traces
to it. That way, the Exporter type is free from dealing with any
connection/protocol details, as this business is taken over by the
implementations of the ProtocolDriver interface.

The gRPC code from the exporter is moved into the implementation of
ProtocolDriver. Currently it only maintains a single connection,
just as the Exporter used to do.

With the split, most of the Exporter options became actually gRPC
connection manager's options. Currently the only option that remained
to be Exporter's is about setting the export kind selector.

* Update changelog

* Increase the test coverage of GRPC driver

* Do not close a channel with multiple senders

The disconnected channel can be used for sending by multiple
goroutines (for example, by metric controller and span processor), so
this channel should not be closed at all. Dropping this line closes a
race between closing a channel and sending to it.

* Simplify new connection handler

The callbacks never return an error, so drop the return type from it.

* Access clients under a lock

The client may change as a result on reconnection in background, so
guard against a racy access.

* Simplify the GRPC driver a bit

The config type was exported earlier to have a consistent way of
configuring the driver, when also the multiple connection driver would
appear. Since we are not going to add a multiple connection driver,
pass the options directly to the driver constructor. Also shorten the
name of the constructor to `NewGRPCDriver`.

* Merge common gRPC code back into the driver

The common code was supposed to be shared between single connection
driver and multiple connection driver, but since the latter won't be
happening, it makes no sense to keep the not-so-common code in a
separate file. Also drop some abstraction too.

* Rename the file with gRPC driver implementation

* Update changelog

* Sleep for a second to trigger the timeout

Sometimes CI has it's better moments, so it's blazing fast and manages
to finish shutting the exporter down within the 1 microsecond timeout.

* Increase the timeout for shutting down the exporter

One millisecond is quite short, and I was getting failures locally or
in CI:

go test ./... + race in ./exporters/otlp
2020/12/14 18:27:54 rpc error: code = Canceled desc = context canceled
2020/12/14 18:27:54 context deadline exceeded
--- FAIL: TestNewExporter_withMultipleAttributeTypes (0.37s)
    otlp_integration_test.go:541: resource span count: got 0, want 1
FAIL
FAIL	go.opentelemetry.io/otel/exporters/otlp	5.278s

or

go test ./... + coverage in ./exporters/otlp
2020/12/14 17:41:16 rpc error: code = Canceled desc = context canceled
2020/12/14 17:41:16 exporter disconnected
--- FAIL: TestNewExporter_endToEnd (1.53s)
    --- FAIL: TestNewExporter_endToEnd/WithCompressor (0.41s)
        otlp_integration_test.go:246: span counts: got 3, want 4
2020/12/14 17:41:18 context canceled
FAIL
coverage: 35.3% of statements in ./...
FAIL	go.opentelemetry.io/otel/exporters/otlp	4.753s

* Shut down the providers in end to end test

This is to make sure that all batched spans are actually flushed
before closing the exporter.
2020-12-21 12:49:45 -08:00
Azfaar Qureshi
3fb80fb2df
Fix duplicate checkout action in GitHub workflow (#1407)
* remove duplicate checkout

* adding changelog
2020-12-17 08:59:44 -08:00
Azfaar Qureshi
bdf87a7896
Migrate CircleCI ci.yml workflow to GitHub Actions (#1382)
* migrating CircleCI jobs to GitHub Actions

* using container matrix instead

* prevent entire workflow from stopping if one go version job fails

* updating github ci to use setup-go

* updating changelog
2020-12-14 19:40:15 -08:00
Johannes Liebermann
c3c4273ecc
Add RO/RW span interfaces (#1360)
* Store span data directly in the span

- Nesting only some of a span's data in a `data` field (with the rest
  of the data living direclty in the `span` struct) is confusing.
- export.SpanData is meant to be an immutable *snapshot* of a span,
  not the "authoritative" state of the span.
- Refactor attributesMap.toSpanData into toKeyValue and make it
  return a []label.KeyValue which is clearer than modifying a struct
  passed to the function.
- Read droppedCount from the attributesMap as a separate operation
  instead of setting it from within attributesMap.toSpanData.
- Set a span's end time in the span itself rather than in the
  SpanData to allow reading the span's end time after a span has
  ended.
- Set a span's end time as soon as possible within span.End so that
  we don't influence the span's end time with operations such as
  fetching span processors and generating span data.
- Remove error handling for uninitialized spans. This check seems to
  be necessary only because we used to have an *export.SpanData field
  which could be nil. Now that we no longer have this field I think we
  can safely remove the check. The error isn't used anywhere else so
  remove it, too.

* Store parent as trace.SpanContext

The spec requires that the parent field of a Span be a Span, a
SpanContext or null.

Rather than extracting the parent's span ID from the trace.SpanContext
which we get from the tracer, store the trace.SpanContext as is and
explicitly extract the parent's span ID where necessary.

* Add ReadOnlySpan interface

Use this interface instead of export.SpanData in places where reading
information from a span is necessary. Use export.SpanData only when
exporting spans.

* Add ReadWriteSpan interface

Use this interface instead of export.SpanData in places where it is
necessary to read information from a span and write to it at the same
time.

* Rename export.SpanData to SpanSnapshot

SpanSnapshot represents the nature of this type as well as its
intended use more accurately.

Clarify the purpose of SpanSnapshot in the docs and emphasize what
should and should not be done with it.

* Rephrase attributesMap doc comment

"refreshes" is wrong for plural ("updates").

* Refactor span.End()

- Improve accuracy of span duration. Record span end time ASAP. We
  want to measure a user operation as accurately as possible, which
  means we want to mark the end time of a span as soon as possible
  after span.End() is called. Any operations we do inside span.End()
  before storing the end time affect the total duration of the span,
  and although these operations are rather fast at the moment they
  still seem to affect the duration of the span by "artificially"
  adding time between the start and end timestamps. This is relevant
  only in cases where the end time isn't explicitly specified.
- Remove redundant idempotence check. Now that IsRecording() is based
  on the value of span.endTime, IsRecording() will always return
  false after span.End() had been called because span.endTime won't
  be zero. This means we no longer need span.endOnce.
- Improve TestEndSpanTwice so that it also ensures subsequent calls
  to span.End() don't modify the span's end time.

* Update changelog

Co-authored-by: Tyler Yahn <codingalias@gmail.com>
Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
2020-12-10 21:15:44 -08:00