Skip to content

Commit 7b38df6

Browse files
committed
resolve merge conflict
2 parents 090b955 + b59e914 commit 7b38df6

File tree

4 files changed

+51
-5
lines changed

4 files changed

+51
-5
lines changed

.github/workflows/test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ env:
1010
# Otherwise, set variable to the commit of your branch on
1111
# opentelemetry-python-contrib which is compatible with these Core repo
1212
# changes.
13-
CONTRIB_REPO_SHA: dde62cebffe519c35875af6d06fae053b3be65ec
13+
CONTRIB_REPO_SHA: d2984f5242ed2250ad1c11b6164e2e8e11e2a804
1414

1515
jobs:
1616
build:

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2626
([#2138](https://github.com/open-telemetry/opentelemetry-python/pull/2138))
2727
- `opentelemetry-exporter-otlp`: Add `opentelemetry-otlp-proto-http` as dependency
2828
([#2147](https://github.com/open-telemetry/opentelemetry-python/pull/2147))
29+
- Fix validity calculation for trace and span IDs
30+
([#2145](https://github.com/open-telemetry/opentelemetry-python/pull/2145))
2931
- Add `schema_url` to `TracerProvider.get_tracer`
3032
([#2154](https://github.com/open-telemetry/opentelemetry-python/pull/2154))
3133

opentelemetry-api/src/opentelemetry/trace/span.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,8 @@ def values(self) -> typing.ValuesView[str]:
387387

388388

389389
DEFAULT_TRACE_STATE = TraceState.get_default()
390-
_TRACE_ID_HEX_LENGTH = 2 ** 128 - 1
390+
_TRACE_ID_MAX_VALUE = 2 ** 128 - 1
391+
_SPAN_ID_MAX_VALUE = 2 ** 64 - 1
391392

392393

393394
class SpanContext(
@@ -420,9 +421,8 @@ def __new__(
420421
trace_state = DEFAULT_TRACE_STATE
421422

422423
is_valid = (
423-
trace_id != INVALID_TRACE_ID
424-
and span_id != INVALID_SPAN_ID
425-
and trace_id < _TRACE_ID_HEX_LENGTH
424+
INVALID_TRACE_ID < trace_id <= _TRACE_ID_MAX_VALUE
425+
and INVALID_SPAN_ID < span_id <= _SPAN_ID_MAX_VALUE
426426
)
427427

428428
return tuple.__new__(

opentelemetry-api/tests/trace/test_span_context.py

+44
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,47 @@ def test_span_context_pickle(self):
4343
trace_state=trace.DEFAULT_TRACE_STATE,
4444
)
4545
self.assertFalse(invalid_sc.is_valid)
46+
47+
def test_trace_id_validity(self):
48+
trace_id_max_value = int("f" * 32, 16)
49+
span_id = 1
50+
51+
# valid trace IDs
52+
sc = trace.SpanContext(trace_id_max_value, span_id, is_remote=False)
53+
self.assertTrue(sc.is_valid)
54+
55+
sc = trace.SpanContext(1, span_id, is_remote=False)
56+
self.assertTrue(sc.is_valid)
57+
58+
# invalid trace IDs
59+
sc = trace.SpanContext(0, span_id, is_remote=False)
60+
self.assertFalse(sc.is_valid)
61+
62+
sc = trace.SpanContext(-1, span_id, is_remote=False)
63+
self.assertFalse(sc.is_valid)
64+
65+
sc = trace.SpanContext(
66+
trace_id_max_value + 1, span_id, is_remote=False
67+
)
68+
self.assertFalse(sc.is_valid)
69+
70+
def test_span_id_validity(self):
71+
span_id_max = int("f" * 16, 16)
72+
trace_id = 1
73+
74+
# valid span IDs
75+
sc = trace.SpanContext(trace_id, span_id_max, is_remote=False)
76+
self.assertTrue(sc.is_valid)
77+
78+
sc = trace.SpanContext(trace_id, 1, is_remote=False)
79+
self.assertTrue(sc.is_valid)
80+
81+
# invalid span IDs
82+
sc = trace.SpanContext(trace_id, 0, is_remote=False)
83+
self.assertFalse(sc.is_valid)
84+
85+
sc = trace.SpanContext(trace_id, -1, is_remote=False)
86+
self.assertFalse(sc.is_valid)
87+
88+
sc = trace.SpanContext(trace_id, span_id_max + 1, is_remote=False)
89+
self.assertFalse(sc.is_valid)

0 commit comments

Comments
 (0)