Commit f9bb589
Cover three untested-critical rows; explain the two that resist
C22. The full-dict-fallback discard is gated on BOTH
recoveredMaxSymbolId >= size AND recoveredMaxSymbolDeltaStart == 0, and
the second conjunct had no failing test. Every candidate passed either
way: the torn-dict tests have frames covering from id 0, so a re-fold at
baseline 0 succeeds anyway, and the covered-prefix test fails the size
conjunct first. The new test builds the shape that discriminates -- a
side-file holding [a,b] beside frames registering c@2 and d@3, so the
frames out-reach the dictionary but are NOT self-sufficient. Delete the
conjunct and recovery discards the only source of ids 0..1, re-folds at
0, finds deltaStart 2 above a coverage of 0 and quarantines a perfectly
recoverable slot.
C23. start()'s catch of CatchUpSendException had no test: no other case
combines a seeded mirror with a failing client through start(). It
matters because a recovered sender ships its catch-up on the CALLER's
thread in SYNC/OFF startup, so without the catch a server that drops
mid-catch-up turns a transient outage into a build() failure -- an
Invariant B violation. Reverted, the new test reports CatchUpSend
"transient wire failure during catch-up" straight out of start().
C25. Nothing exercised a split failing at frame k>1; every other
failed-publish test fails at frame 1. The new test injects at the RING
rather than the cap -- both frames clear the pre-flight, but the second
does not fit a fresh sf_max_bytes segment -- so frame 1 publishes and
frame 2 throws. It is labelled a CHARACTERISATION test, not a mutation
guard, because it does not discriminate against reverting the pd.size()
persist key: frame 1 published successfully, so advanceSentMaxSymbolId
had already moved the baseline past the whole batch and the retry is an
early return under either key. That is exactly why the k>1 path is safe,
and it is what the test records.
C21 and C24 are NOT covered, and both are downgraded.
C21 -- the advanceSentMaxSymbolId/sealAndSwapBuffer ordering -- needs a
publish that fails ONCE and then succeeds. Every failure mode reachable
from the public API is permanent for a given batch: an oversized frame
stays oversized, and the rows are retained deliberately, so the retry
re-encodes the same bytes. Reaching it would need a fault-injection seam
at appendBlocking, which is more production test-surface than the row
justifies now that C25 covers the k>1 shape.
C24 -- trySendOne's re-anchor catch and its cap-gap discrimination -- is
unreachable, for the reason that retracted C13 in the previous commit:
both connection setup sites call tryRetireOrphanTail before any send, so
that arm is only reached once frames below the tail have been sent on
this connection, and the catch sits inside the nextWireSeq == 0 branch
that then cannot hold.
Full client suite: 2701 tests green.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 2ee6e8f commit f9bb589
3 files changed
Lines changed: 171 additions & 0 deletions
File tree
- core/src/test/java/io/questdb/client/test/cutlass/qwp/client
- sf/cursor
Lines changed: 84 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
273 | 273 | | |
274 | 274 | | |
275 | 275 | | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
276 | 360 | | |
277 | 361 | | |
278 | 362 | | |
| |||
Lines changed: 37 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1001 | 1001 | | |
1002 | 1002 | | |
1003 | 1003 | | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
1004 | 1041 | | |
1005 | 1042 | | |
1006 | 1043 | | |
| |||
Lines changed: 50 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
542 | 542 | | |
543 | 543 | | |
544 | 544 | | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
545 | 595 | | |
546 | 596 | | |
547 | 597 | | |
| |||
0 commit comments