Commit 3e11e0e
committed
fix(storage/sql): retry refresh token update on serialization failures
UpdateRefreshToken runs a read-modify-write inside a SERIALIZABLE
transaction. Under concurrent refresh-token rotation of the same token
(e.g. multiple kube clients refreshing at once), Postgres aborts the
conflicting transaction with SQLSTATE 40001 and the error surfaced to
clients as HTTP 500.
Add a bounded, jittered retry around the refresh-token update that
re-runs the transaction on transient serialization/deadlock failures,
detected per-driver (Postgres 40001/40P01, MySQL 1213/1205). Error
wraps in the SQL storage now use %w so the driver error can be matched
with errors.As. SQLite serializes writes and opts out (nil check).
Enables the previously-disabled refresh-token concurrency conformance
tests for Postgres and MySQL.
Refs: CPEC-711
Signed-off-by: Ronan <ronan.souza@wildlifestudios.com>1 parent 1018112 commit 3e11e0e
7 files changed
Lines changed: 235 additions & 71 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
24 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
25 | 28 | | |
26 | 29 | | |
27 | 30 | | |
28 | 31 | | |
29 | 32 | | |
30 | 33 | | |
31 | 34 | | |
| 35 | + | |
| 36 | + | |
32 | 37 | | |
33 | 38 | | |
34 | 39 | | |
| |||
195 | 200 | | |
196 | 201 | | |
197 | 202 | | |
198 | | - | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
199 | 212 | | |
200 | 213 | | |
201 | 214 | | |
| |||
307 | 320 | | |
308 | 321 | | |
309 | 322 | | |
310 | | - | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
311 | 333 | | |
312 | 334 | | |
313 | 335 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
243 | 243 | | |
244 | 244 | | |
245 | 245 | | |
246 | | - | |
| 246 | + | |
247 | 247 | | |
248 | 248 | | |
249 | 249 | | |
| |||
280 | 280 | | |
281 | 281 | | |
282 | 282 | | |
283 | | - | |
| 283 | + | |
284 | 284 | | |
285 | 285 | | |
286 | 286 | | |
| |||
317 | 317 | | |
318 | 318 | | |
319 | 319 | | |
320 | | - | |
| 320 | + | |
321 | 321 | | |
0 commit comments