From ec786aecf4a4725528589f702ccb10b1525a41fe Mon Sep 17 00:00:00 2001 From: Ryan Barnes Date: Tue, 23 May 2023 14:29:01 +1000 Subject: [PATCH 1/3] refactor(span): move span_id and trace_id to lazy generation --- sentry_sdk/tracing.py | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/sentry_sdk/tracing.py b/sentry_sdk/tracing.py index 35d77ae46e..2ea1e18a28 100644 --- a/sentry_sdk/tracing.py +++ b/sentry_sdk/tracing.py @@ -80,8 +80,8 @@ def add(self, span): class Span(object): __slots__ = ( - "trace_id", - "span_id", + "_trace_id", + "_span_id", "parent_span_id", "same_process_as_parent", "sampled", @@ -129,8 +129,8 @@ def __init__( start_timestamp=None, # type: Optional[datetime] ): # type: (...) -> None - self.trace_id = trace_id or uuid.uuid4().hex - self.span_id = span_id or uuid.uuid4().hex[16:] + self._trace_id = trace_id + self._span_id = span_id self.parent_span_id = parent_span_id self.same_process_as_parent = same_process_as_parent self.sampled = sampled @@ -161,6 +161,28 @@ def init_span_recorder(self, maxlen): if self._span_recorder is None: self._span_recorder = _SpanRecorder(maxlen) + @property + def span_id(self) -> str: + if not self._span_id: + self._span_id = uuid.uuid4().hex[16:] + + return self._span_id + + @span_id.setter + def span_id(self, value: str) -> None: + self._span_id = value + + @property + def trace_id(self) -> str: + if not self._trace_id: + self._trace_id = uuid.uuid4().hex + + return self._trace_id + + @trace_id.setter + def trace_id(self, value: str) -> None: + self._trace_id = value + def __repr__(self): # type: () -> str return ( From 2d7b73869d2ecc4efa177fcb7d6bde20601a801d Mon Sep 17 00:00:00 2001 From: Ryan Barnes Date: Tue, 23 May 2023 14:32:23 +1000 Subject: [PATCH 2/3] chore(typing): swap typing to comment style --- sentry_sdk/tracing.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/sentry_sdk/tracing.py b/sentry_sdk/tracing.py index 2ea1e18a28..afd258967a 100644 --- a/sentry_sdk/tracing.py +++ b/sentry_sdk/tracing.py @@ -162,7 +162,21 @@ def init_span_recorder(self, maxlen): self._span_recorder = _SpanRecorder(maxlen) @property - def span_id(self) -> str: + def trace_id(self): + # type: () -> str + if not self._trace_id: + self._trace_id = uuid.uuid4().hex + + return self._trace_id + + @trace_id.setter + def trace_id(self, value): + # type: (str) -> None + self._trace_id = value + + @property + def span_id(self): + # type: () -> str if not self._span_id: self._span_id = uuid.uuid4().hex[16:] @@ -170,19 +184,9 @@ def span_id(self) -> str: @span_id.setter def span_id(self, value: str) -> None: + # type: (str) -> None self._span_id = value - @property - def trace_id(self) -> str: - if not self._trace_id: - self._trace_id = uuid.uuid4().hex - - return self._trace_id - - @trace_id.setter - def trace_id(self, value: str) -> None: - self._trace_id = value - def __repr__(self): # type: () -> str return ( From 0231fe8550ffd7b737ad5821d5ff40760537fc9f Mon Sep 17 00:00:00 2001 From: Ryan Barnes Date: Fri, 23 Jun 2023 22:37:58 +1000 Subject: [PATCH 3/3] chore(typing): swap missed typing to comment style --- sentry_sdk/tracing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry_sdk/tracing.py b/sentry_sdk/tracing.py index 64911362b8..187a6fd769 100644 --- a/sentry_sdk/tracing.py +++ b/sentry_sdk/tracing.py @@ -184,7 +184,7 @@ def span_id(self): return self._span_id @span_id.setter - def span_id(self, value: str) -> None: + def span_id(self, value): # type: (str) -> None self._span_id = value