Commit aba8399
Refine token-store cross-process and load semantics
Run clear() under the cross-process lock. A bare deleteIfExists let a
peer mid-refresh atomically rename a fresh file in just after the delete,
resurrecting the entry; clear() now deletes inside inLock (which cleans
up its own lock and degrades to lock-free if it cannot acquire one). A
Files.isDirectory guard keeps clear() a true no-op on a never-used store
rather than creating the directory just to run the locked delete. Cross-
process clear stays best-effort: a peer holding a live in-memory token
may legitimately re-persist afterwards.
Derive the adopted token lifetime from the absolute expiry. adopt()
clamped expires_at_millis and token_ttl_millis from the file
independently, so a tampered file could make them disagree and throw off
effectiveSkewMillis (which caps the skew at half the lifetime). Derive
tokenTtlMillis from the clamped expiry instead, so the skew basis always
matches the authoritative remaining lifetime; a legitimate file is
unaffected.
Document the cross-process contract more precisely. The README now notes
that lock-file staleness is judged by modification time, so coordination
assumes a shared clock (a single machine or synchronized clocks; NFS
clock skew can mis-judge it), and that clearCache() is best-effort across
processes. The frozen on-disk contract now states the document must be a
single flat JSON object, which the parser already enforces by rejecting
an array-wrapped or non-object shape - so the Python client mirrors it.
Order parseAndVerify before parseLongOrZero to match the alphabetical
member ordering.
Add tests for the expiry-derived lifetime and the clear-on-empty-store
no-op; both were proven to fail with their fix reverted.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 2128e54 commit aba8399
6 files changed
Lines changed: 77 additions & 16 deletions
File tree
- core/src
- main/java/io/questdb/client/cutlass/auth
- test/java/io/questdb/client/test/cutlass/auth
- design
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
248 | 248 | | |
249 | 249 | | |
250 | 250 | | |
251 | | - | |
| 251 | + | |
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
| |||
Lines changed: 24 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
191 | 191 | | |
192 | 192 | | |
193 | 193 | | |
194 | | - | |
195 | | - | |
196 | | - | |
197 | | - | |
198 | | - | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
199 | 210 | | |
200 | 211 | | |
201 | 212 | | |
| |||
295 | 306 | | |
296 | 307 | | |
297 | 308 | | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
304 | | - | |
305 | | - | |
306 | 309 | | |
307 | 310 | | |
308 | 311 | | |
| |||
339 | 342 | | |
340 | 343 | | |
341 | 344 | | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
342 | 353 | | |
343 | 354 | | |
344 | 355 | | |
| |||
Lines changed: 7 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1038 | 1038 | | |
1039 | 1039 | | |
1040 | 1040 | | |
1041 | | - | |
1042 | | - | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
1043 | 1048 | | |
1044 | 1049 | | |
1045 | 1050 | | |
| |||
Lines changed: 12 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
173 | 185 | | |
174 | 186 | | |
175 | 187 | | |
| |||
Lines changed: 29 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
59 | 88 | | |
60 | 89 | | |
61 | 90 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
337 | 337 | | |
338 | 338 | | |
339 | 339 | | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
340 | 344 | | |
341 | 345 | | |
342 | 346 | | |
| |||
0 commit comments