Skip to content

Conversation

@Aneurysm9
Copy link
Member

  • Adds NewSpanContext() constructor and SpanContextConfig{} struct for constructing a new SpanContext when all fields are known
  • Adds With() methods to SpanContext for deriving a SpanContext with a single field changed.
  • Updates all uses of SpanContext to use the new API

Fixes #1557

* Adds NewSpanContext() constructor and SpanContextConfig{} struct for
constructing a new SpanContext when all fields are known
* Adds With<field>() methods to SpanContext for deriving a SpanContext
with a single field changed.
* Updates all uses of SpanContext to use the new API

Signed-off-by: Anthony J Mirabella <[email protected]>
Signed-off-by: Anthony J Mirabella <[email protected]>
@codecov
Copy link

codecov bot commented Feb 23, 2021

Codecov Report

Merging #1573 (a54d665) into main (d75e268) will increase coverage by 0.1%.
The diff coverage is 92.4%.

Impacted file tree graph

@@           Coverage Diff           @@
##            main   #1573     +/-   ##
=======================================
+ Coverage   77.1%   77.2%   +0.1%     
=======================================
  Files        128     128             
  Lines       6742    6799     +57     
=======================================
+ Hits        5203    5254     +51     
- Misses      1288    1294      +6     
  Partials     251     251             
Impacted Files Coverage Δ
bridge/opencensus/bridge.go 84.9% <0.0%> (ø)
trace/trace.go 86.1% <81.8%> (-0.6%) ⬇️
oteltest/tracer.go 93.0% <87.5%> (ø)
bridge/opencensus/utils/utils.go 100.0% <100.0%> (ø)
bridge/opentracing/internal/mock.go 74.5% <100.0%> (+0.2%) ⬆️
exporters/otlp/internal/otlptest/data.go 61.7% <100.0%> (ø)
exporters/otlp/internal/transform/span.go 98.1% <100.0%> (+<0.1%) ⬆️
exporters/trace/jaeger/jaeger.go 93.7% <100.0%> (+0.1%) ⬆️
exporters/trace/zipkin/model.go 98.6% <100.0%> (ø)
oteltest/config.go 92.5% <100.0%> (+0.6%) ⬆️
... and 4 more

Copy link
Member

@bogdandrutu bogdandrutu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a general rule that I would apply is that limit as much as possible the public API at this moment :)

@bogdandrutu
Copy link
Member

@Aneurysm9 my comment is very generic if you have good usecases you can ignore it. It was more like I want to make sure this is how we think about the API :)

@Aneurysm9
Copy link
Member Author

@Aneurysm9 my comment is very generic if you have good usecases you can ignore it. It was more like I want to make sure this is how we think about the API :)

100% agreed. I started with just the NewSpanContext() API and expanded as I encountered uses that weren't well suited to that interface. I think it's good to question those decisions and thus why I left this as a draft and asked for feedback. Do you think additional documentation around the With* or MarshalJSON() APIs would be useful?

@Aneurysm9 Aneurysm9 marked this pull request as ready for review February 26, 2021 20:23
@MrAlias MrAlias added pkg:SDK Related to an SDK package release:required-for-ga labels Mar 4, 2021
@MrAlias MrAlias added this to the RC1 milestone Mar 4, 2021
@Aneurysm9 Aneurysm9 requested a review from MrAlias March 5, 2021 22:49
@MrAlias MrAlias merged commit e88a091 into open-telemetry:main Mar 9, 2021
@MrAlias MrAlias mentioned this pull request Mar 18, 2021
pellared added a commit that referenced this pull request Mar 26, 2025
- Generate `semconv/v1.31.0`
- Stop generating deprecated metric semconv similar to all other
generation
- Fix acronyms:
  - `ReplicationController`
  - `ResourceQuota`

## [`v1.31.0` semantic convention release
notes](https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.31.0):

<h3>🛑 Breaking changes 🛑</h3>
<ul>
<li>
<p><code>code</code>: <code>code.function.name</code> value should
contain the fully qualified function name, <code>code.namespace</code>
is now deprecated (<a
href="open-telemetry/semantic-conventions#1677"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1677/hovercard">#1677</a>)</p>
</li>
<li>
<p><code>gen-ai</code>: Introduce <code>gen_ai.output.type</code>and
deprecate <code>gen_ai.openai.request.response_format</code> (<a
href="open-telemetry/semantic-conventions#1757"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1757/hovercard">#1757</a>)</p>
</li>
<li>
<p><code>mobile</code>: Rework <code>device.app.lifecycle</code> mobile
event. (<a
href="open-telemetry/semantic-conventions#1880"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1880/hovercard">#1880</a>)<br>
The <code>device.app.lifecycle</code> event has been reworked to use
attributes instead<br>
of event body fields. The <code>ios.app.state</code> and
<code>android.app.state</code> attributes<br>
have been reintroduced to the attribute registry.</p>
</li>
<li>
<p><code>system</code>: Move CPU-related system.cpu.* metrics to CPU
namespace (<a
href="open-telemetry/semantic-conventions#1873"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1873/hovercard">#1873</a>)</p>
</li>
<li>
<p><code>k8s</code>: Change k8s.replication_controller metrics to
k8s.replicationcontroller (<a
href="open-telemetry/semantic-conventions#1848"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1848/hovercard">#1848</a>)</p>
</li>
<li>
<p><code>db</code>: Rename <code>db.system</code> to
<code>db.system.name</code> in database metrics, and update the values
to be consistent with database spans. (<a
href="open-telemetry/semantic-conventions#1581"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1581/hovercard">#1581</a>)</p>
</li>
<li>
<p><code>session</code>: Move <code>session.id</code> and
<code>session.previous_id</code> from body fields to event attributes,
and yamlize <code>session.start</code> and <code>session.end</code>
events. (<a
href="open-telemetry/semantic-conventions#1845"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1845/hovercard">#1845</a>)<br>
As part of the ongoing migration of event fields from LogRecord body to
extended/complex attributes, the <code>session.start</code> and
<code>session.end</code> events have been redefined.</p>
</li>
</ul>
<h3>💡 Enhancements 💡</h3>
<ul>
<li>
<p><code>code</code>: Mark <code>code.*</code> semantic conventions as
release candidate (<a
href="open-telemetry/semantic-conventions#1377"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1377/hovercard">#1377</a>)</p>
</li>
<li>
<p><code>gen-ai</code>: Added AI Agent Semantic Convention (<a
href="open-telemetry/semantic-conventions#1732"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1732/hovercard">#1732</a>,
<a
href="open-telemetry/semantic-conventions#1739"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1739/hovercard">#1739</a>)</p>
</li>
<li>
<p><code>db</code>: Add database-specific notes on db.operation.name and
db.collection.name for Cassandra, Cosmos DB, HBase, MongoDB, and Redis,
covering their batch/bulk terms and lack of cross-table queries. (<a
href="open-telemetry/semantic-conventions#1863"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1863/hovercard">#1863</a>,
<a
href="open-telemetry/semantic-conventions#1573"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1573/hovercard">#1573</a>)</p>
</li>
<li>
<p><code>gen-ai</code>: Adds <code>gen_ai.request.choice.count</code>
span attribute (<a
href="open-telemetry/semantic-conventions#1888"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1888/hovercard">#1888</a>)<br>
Enables recording target number of completions to generate</p>
</li>
<li>
<p><code>enduser</code>: Undeprecate 'enduser.id' and introduce new
attribute <code>enduser.pseudo.id</code> (<a
href="open-telemetry/semantic-conventions#1104"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1104/hovercard">#1104</a>)<br>
The new attribute <code>enduser.pseudo.id</code> is intended to provide
a unique identifier of a pseudonymous enduser.</p>
</li>
<li>
<p><code>k8s</code>: Add <code>k8s.hpa</code>,
<code>k8s.resourcequota</code> and
<code>k8s.replicationcontroller</code> attributes and resources (<a
href="open-telemetry/semantic-conventions#1656"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1656/hovercard">#1656</a>)</p>
</li>
<li>
<p><code>k8s</code>: How to populate resource attributes based on
attributes, labels and transformation (<a
href="open-telemetry/semantic-conventions#236"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/236/hovercard">#236</a>)</p>
</li>
<li>
<p><code>process</code>: Adjust the semantic expectations for
<code>process.executable.name</code> (<a
href="open-telemetry/semantic-conventions#1736"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1736/hovercard">#1736</a>)</p>
</li>
<li>
<p><code>otel</code>: Adds SDK self-monitoring metrics for span
processing (<a
href="open-telemetry/semantic-conventions#1631"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1631/hovercard">#1631</a>)</p>
</li>
<li>
<p><code>cicd</code>: Adds a new attribute
<code>cicd.pipeline.run.url.full</code> and corrects the attribute
description of <code>cicd.pipeline.task.run.url.full</code> (<a
href="open-telemetry/semantic-conventions#1796"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1796/hovercard">#1796</a>)</p>
</li>
<li>
<p><code>user-agent</code>: Add <code>user_agent.os.name</code> and
<code>user_agent.os.version</code> attributes (<a
href="open-telemetry/semantic-conventions#1433"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1433/hovercard">#1433</a>)</p>
</li>
</ul>
<h3>🧰 Bug fixes 🧰</h3>
<ul>
<li><code>process</code>: Fix units of
process.open_file_descriptor.count and process.context_switches (<a
href="open-telemetry/semantic-conventions#1662"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1662/hovercard">#1662</a>)</li>
</ul>

---------

Co-authored-by: Robert Pająk <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pkg:SDK Related to an SDK package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SpanContext must be immutable

4 participants