Skip to content

Commit 9c918df

Browse files
committed
fix usage of 'memo' in '__deepcopy__' implementation
1 parent fe94bb0 commit 9c918df

2 files changed

Lines changed: 8 additions & 9 deletions

File tree

  • opentelemetry-api/src/opentelemetry/attributes
  • opentelemetry-sdk/src/opentelemetry/sdk/util

opentelemetry-api/src/opentelemetry/attributes/__init__.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -320,18 +320,16 @@ def __len__(self) -> int:
320320
return len(self._dict)
321321

322322
def __deepcopy__(self, memo: dict) -> "BoundedAttributes":
323-
with self._lock:
324-
attributes = copy.deepcopy(self._dict, memo)
325-
dropped = self.dropped
326323
copy_ = BoundedAttributes(
327-
self.maxlen,
328-
attributes,
329-
self._immutable,
330-
self.max_value_len,
331-
self._extended_attributes,
324+
maxlen=self.maxlen,
325+
immutable=self._immutable,
326+
max_value_len=self.max_value_len,
327+
extended_attributes=self._extended_attributes,
332328
)
333-
copy_.dropped = dropped
334329
memo[id(self)] = copy_
330+
with self._lock:
331+
copy_._dict = copy.deepcopy(self._dict, memo)
332+
copy_.dropped = self.dropped
335333
return copy_
336334

337335
def copy(self): # type: ignore

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ def __init__(self, maxlen: Optional[int]):
5858

5959
def __deepcopy__(self, memo):
6060
copy_ = BoundedList(0)
61+
memo[id(self)] = copy_
6162
with self._lock:
6263
copy_.dropped = self.dropped
6364
copy_._dq = copy.deepcopy(self._dq, memo)

0 commit comments

Comments
 (0)