Commit 7ad544f
fix(dedupe): Avoid retaining strong references to user exceptions
DedupeIntegration stored the original exception instance as a fallback
when `weakref.ref(exc)` failed (e.g. for builtin exception types). That
meant a reference to every such exception lived on the context var
until the next exception replaced it, potentially pinning large
traceback frames, locals, and user objects in memory.
Instead, fall back to a `(type, hash(args))` fingerprint so dedupe can
still suppress duplicates without keeping the exception alive.
Refs PY-2381
Co-Authored-By: Claude Opus 4.7 <[email protected]>1 parent e476bf5 commit 7ad544f
1 file changed
Lines changed: 24 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
16 | 30 | | |
17 | 31 | | |
18 | 32 | | |
| |||
35 | 49 | | |
36 | 50 | | |
37 | 51 | | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | 52 | | |
45 | | - | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
46 | 61 | | |
47 | 62 | | |
48 | 63 | | |
49 | 64 | | |
50 | 65 | | |
51 | 66 | | |
52 | 67 | | |
53 | | - | |
| 68 | + | |
54 | 69 | | |
55 | 70 | | |
56 | 71 | | |
| |||
0 commit comments