Skip to content

Commit 9d986d4

Browse files
committed
Protect start_time and end_time from bein set manually by the user
Fixes #361
1 parent c24b3b5 commit 9d986d4

File tree

3 files changed

+26
-16
lines changed

3 files changed

+26
-16
lines changed

ext/opentelemetry-ext-jaeger/tests/test_jaeger_exporter.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -169,18 +169,18 @@ def test_translate_to_jaeger(self):
169169
trace.Span(name=span_names[2], context=other_context, parent=None),
170170
]
171171

172-
otel_spans[0].start_time = start_times[0]
172+
otel_spans[0].start(start_time=start_times[0])
173173
# added here to preserve order
174174
otel_spans[0].set_attribute("key_bool", False)
175175
otel_spans[0].set_attribute("key_string", "hello_world")
176176
otel_spans[0].set_attribute("key_float", 111.22)
177-
otel_spans[0].end_time = end_times[0]
177+
otel_spans[0].end(end_time=end_times[0])
178178

179-
otel_spans[1].start_time = start_times[1]
180-
otel_spans[1].end_time = end_times[1]
179+
otel_spans[1].start(start_time=start_times[1])
180+
otel_spans[1].end(end_time=end_times[1])
181181

182-
otel_spans[2].start_time = start_times[2]
183-
otel_spans[2].end_time = end_times[2]
182+
otel_spans[2].start(start_time=start_times[2])
183+
otel_spans[2].end(end_time=end_times[2])
184184

185185
# pylint: disable=protected-access
186186
spans = jaeger_exporter._translate_to_jaeger(otel_spans)

ext/opentelemetry-ext-zipkin/tests/test_zipkin_exporter.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,18 +154,18 @@ def test_export(self):
154154
trace.Span(name=span_names[2], context=other_context, parent=None),
155155
]
156156

157-
otel_spans[0].start_time = start_times[0]
157+
otel_spans[0].start(start_time=start_times[0])
158158
# added here to preserve order
159159
otel_spans[0].set_attribute("key_bool", False)
160160
otel_spans[0].set_attribute("key_string", "hello_world")
161161
otel_spans[0].set_attribute("key_float", 111.22)
162-
otel_spans[0].end_time = end_times[0]
162+
otel_spans[0].end(end_time=end_times[0])
163163

164-
otel_spans[1].start_time = start_times[1]
165-
otel_spans[1].end_time = end_times[1]
164+
otel_spans[1].start(start_time=start_times[1])
165+
otel_spans[1].end(end_time=end_times[1])
166166

167-
otel_spans[2].start_time = start_times[2]
168-
otel_spans[2].end_time = end_times[2]
167+
otel_spans[2].start(start_time=start_times[2])
168+
otel_spans[2].end(end_time=end_times[2])
169169

170170
service_name = "test-service"
171171
local_endpoint = {

opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,18 @@ def __init__(
171171
else:
172172
self.links = BoundedList.from_seq(MAX_NUM_LINKS, links)
173173

174-
self.end_time = None # type: Optional[int]
175-
self.start_time = None # type: Optional[int]
174+
self._end_time = None # type: Optional[int]
175+
self._start_time = None # type: Optional[int]
176176
self.instrumentation_info = instrumentation_info
177177

178+
@property
179+
def start_time(self):
180+
return self._start_time
181+
182+
@property
183+
def end_time(self):
184+
return self._end_time
185+
178186
def __repr__(self):
179187
return '{}(name="{}", context={})'.format(
180188
type(self).__name__, self.name, self.context
@@ -243,7 +251,7 @@ def start(self, start_time: Optional[int] = None) -> None:
243251
return
244252
has_started = self.start_time is not None
245253
if not has_started:
246-
self.start_time = (
254+
self._start_time = (
247255
start_time if start_time is not None else time_ns()
248256
)
249257
if has_started:
@@ -259,7 +267,9 @@ def end(self, end_time: Optional[int] = None) -> None:
259267
raise RuntimeError("Calling end() on a not started span.")
260268
has_ended = self.end_time is not None
261269
if not has_ended:
262-
self.end_time = end_time if end_time is not None else time_ns()
270+
self._end_time = (
271+
end_time if end_time is not None else time_ns()
272+
)
263273
if has_ended:
264274
logger.warning("Calling end() on an ended span.")
265275
return

0 commit comments

Comments
 (0)