Repository navigation
Commit 62c5164
authored
fix(http): stop replaying POST on a gateway 5xx (#61)
* fix(http): stop replaying POST on a gateway 5xx
HotdataClient passed its own `retries=` into Configuration, which replaces
the generated SDK's retry policy wholesale. That policy listed POST in
`allowed_methods` alongside a (502, 503, 504) forcelist, so an intermediary
timing out a long request produced a silent, identical re-POST while the
server was still working on the first one.
For a non-idempotent call — a data load — the duplicate collides with the
write lock the original holds and is refused, and the caller sees contention
rather than the timeout that actually happened.
The override is removed so the SDK's own default applies. It is the policy
this wrapper was reaching for: hotdata._retry retries a pre-response
connection reset on any method (the stale pooled socket case, where the
server did no work) while leaving read timeouts and status retries
idempotent-only.
hotdata_framework/http.py existed only to build that policy and had no other
callers, so it goes with it.
* docs(retry): correct the test comment and the stale README bullet
The test's ProtocolError with no cause is not a read timeout — those are
ReadTimeoutError and never reach that branch. Say what the value actually
is, and note that _is_connection_error is urllib3-private on an unpinned
transitive dependency.
README advertised configuring SDK retries; that is now the SDK's own
default, which this package deliberately leaves alone.1 parent 08bd929 commit 62c5164
5 files changed
Lines changed: 92 additions & 20 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
10 | 32 | | |
11 | 33 | | |
12 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
56 | 55 | | |
57 | 56 | | |
58 | 57 | | |
| |||
154 | 153 | | |
155 | 154 | | |
156 | 155 | | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
157 | 162 | | |
158 | 163 | | |
159 | 164 | | |
160 | 165 | | |
161 | | - | |
162 | 166 | | |
163 | 167 | | |
164 | 168 | | |
| |||
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
0 commit comments