This PR removes the non-compliant ChildOf and FollowsFrom interfaces
and the Relation type, which were inherited from OpenTracing via the
initial prototype. Instead allow adding a span context to the go
context as a remote span context and use a simple algorithm for
figuring out an actual parent of the new span, which was proposed for
the OpenTelemetry specification.
Also add a way to ignore current span and remote span context in go
context, so we can force the tracer to create a new root span - a span
with a new trace ID.
That required some moderate changes in the opentracing bridge - first
reference with ChildOfRef reference type becomes a local parent, the
rest become links. This also fixes links handling in the meantime. The
downside of the approach proposed here is that we can only set the
remote parent when creating a span through the opentracing API.
Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>
* Rename distributedcontext package to correlation
Correlation is the name we agreed upon.
* Move trace propagators to api/trace
The trace propagators tests had to be moved to a testtrace subpackage
to avoid import cycles between api/trace and internal/trace.
Needed to shut up golint about stutter in trace.TraceContext -
TraceContext is a name of a W3C spec, so this stutter is
expected. It's certainly still better than golint's suggestion of
having trace.Context.
* Rename api/propagators to api/propagation
This package will not contain any propagators in the long run, just
the interface definitions.
Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>
* Add Stackdriver Trace exporter for trace.
TODOs for future work is:
* to replace bundler.Bundler
* to add proper tests for the exporter
* to move the exporter to proper repository once it will be created.
* Change to use functions for the exporter initialization instead of
passing option struct directly.
This fix is aliging the same fix for Jaeger (#146, #161)
* Change Option struct to be function type
* Change the original Option struct to be private
* Add line comments to maxMessageEventsPerSpan to leave it for future implementation
* Fix unnessesary expressions specified by `make precommit`
Left errors by `make precommit` in experimental/bridge/opentracing.
* Ran make precommit
* Add new line at EOF
* WIP: Start implementing BatchSpanExporter interfaces
* Change to use RegisterSpanProcessor to register bsp
* Change function names to fit current implementation of sdk
* Removed google.golang.org/api/support/bundler and implement ssp and bsp
* Change spanProcessor as a member of Exporter.
* Fix option names used for BatchSpanProcessor initialization.
* Change Exporter.Shutdown just to unregister spanProcessor.
* Removed copyright statements of OpenCensus.
* Fix small typo and EOF new line
* Fix interfaces of ExportSpan/ExportSpans to meet SpanSyncer/SpanBatcher
* Change to follow context.Context passed in ExportSpan/ExportSpans
* Fix Stackdriver Exporter to hold sync.Once to lock when it is registered and
unregistered.