Repository navigation
Commit 955d36d
committed
fix: serialize NO_PROXY sanitization across concurrent client constructions
Addresses Codex P2: when two SDK default clients are constructed
concurrently while NO_PROXY contains a newline, one call can enter the
context after another already sanitized the process-wide env, record no
original value, and then the first call restores the invalid value before
the second call's super().__init__() reaches httpx's env proxy parsing.
That leaves the second client exposed to the same InvalidURL this change
is trying to prevent.
Added a module-level threading.Lock (_no_proxy_sanitizer_lock) that wraps
the entire sanitize-construct-restore window in _sanitized_no_proxy, so
concurrent client constructions are serialized and each call sees a
consistent environment. Added test_concurrent_client_construction_serializes_sanitization
that spawns 10 threads constructing clients with a newline NO_PROXY and
verifies no errors and the original value is restored.1 parent 332dd5d commit 955d36d
2 files changed
Lines changed: 58 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| |||
833 | 834 | | |
834 | 835 | | |
835 | 836 | | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
836 | 840 | | |
837 | 841 | | |
838 | 842 | | |
| |||
846 | 850 | | |
847 | 851 | | |
848 | 852 | | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
849 | 857 | | |
850 | | - | |
851 | | - | |
852 | | - | |
853 | | - | |
854 | | - | |
855 | | - | |
856 | | - | |
857 | | - | |
858 | | - | |
859 | | - | |
860 | | - | |
861 | | - | |
862 | | - | |
863 | | - | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
864 | 873 | | |
865 | 874 | | |
866 | 875 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
| 11 | + | |
10 | 12 | | |
11 | 13 | | |
12 | 14 | | |
| |||
197 | 199 | | |
198 | 200 | | |
199 | 201 | | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
0 commit comments