Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e3567c4

Browse files
author
Alex Boten
committed
use a _Token for ThreadLocalRuntimeContext
Signed-off-by: Alex Boten <[email protected]>
1 parent ba7d8e9 commit e3567c4

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

opentelemetry-api/src/opentelemetry/context/threadlocal_context.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ class ThreadLocalRuntimeContext(RuntimeContext):
2323
implementation is available for usage with Python 3.4.
2424
"""
2525

26+
class _Token:
27+
def __init__(self, context: Context) -> None:
28+
self.context = context
29+
2630
_CONTEXT_KEY = "current_context"
2731

2832
def __init__(self) -> None:
@@ -31,9 +35,8 @@ def __init__(self) -> None:
3135
def set_current(self, context: Context) -> object:
3236
"""See `opentelemetry.context.RuntimeContext.set_current`."""
3337
current = self.get_current()
34-
setattr(self._current_context, str(id(current)), current)
3538
setattr(self._current_context, self._CONTEXT_KEY, context)
36-
return str(id(current))
39+
return self._Token(current)
3740

3841
def get_current(self) -> Context:
3942
"""See `opentelemetry.context.RuntimeContext.get_current`."""
@@ -48,10 +51,9 @@ def get_current(self) -> Context:
4851

4952
def reset(self, token: object) -> None:
5053
"""See `opentelemetry.context.RuntimeContext.reset`."""
51-
if not hasattr(self._current_context, str(token)):
54+
if not isinstance(token, self._Token):
5255
raise ValueError("invalid token")
53-
context = getattr(self._current_context, str(token)) # type: Context
54-
setattr(self._current_context, self._CONTEXT_KEY, context)
56+
setattr(self._current_context, self._CONTEXT_KEY, token.context)
5557

5658

5759
__all__ = ["ThreadLocalRuntimeContext"]

0 commit comments

Comments
 (0)