Skip to content

Commit 8b3bbbb

Browse files
authored
in varmap, iterate over a copy of the dict to avoid threading issues (#885)
fixes #882
1 parent f3be056 commit 8b3bbbb

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

elasticapm/utils/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ def varmap(func, var, context=None, name=None, **kwargs):
6161
return func(name, "<...>", **kwargs)
6262
context.add(objid)
6363
if isinstance(var, dict):
64-
ret = func(name, dict((k, varmap(func, v, context, k, **kwargs)) for k, v in compat.iteritems(var)), **kwargs)
64+
# iterate over a copy of the dictionary to avoid "dictionary changed size during iteration" issues
65+
ret = func(
66+
name, dict((k, varmap(func, v, context, k, **kwargs)) for k, v in compat.iteritems(var.copy())), **kwargs
67+
)
6568
elif isinstance(var, (list, tuple)):
6669
ret = func(name, [varmap(func, f, context, name, **kwargs) for f in var], **kwargs)
6770
else:

0 commit comments

Comments
 (0)