Commit 76fe4f1
Bound recovered symbol id to committed frames
CursorSendEngine.recoveredMaxSymbolId walked every recovered frame,
including the aborted orphan-deferred tail -- the frames trySendOne
retires without ever transmitting. Those frames typically introduce the
highest symbol ids, so a host crash that tore the persisted .symbol-dict
down to the committed ids while an orphan-tail frame referenced a higher
one inflated recoveredMaxSymbolId and made seedGlobalDictionaryFromPersisted
reject an otherwise fully recoverable slot. The producer never reuses an
orphan id on the wire -- the tail retires before its new frames send -- so
the rejection was a false positive.
Bound the maxSymbolDeltaEnd walk to recoveredCommitBoundaryFsn so only
committed frames count. MmapSegment and SegmentRing take a maxFsnInclusive
argument; a frame whose fsn (baseSeq + i) exceeds it is skipped, and the
walk still advances past it. A slot with no orphan tail is unchanged: the
boundary equals publishedFsn, so every frame still counts.
Add testRecoveredMaxSymbolIdExcludesOrphanTailFrames: a committed delta
frame registering ids 0,1 plus a deferred (orphan) frame registering id 2
must recover recoveredMaxSymbolId == 1, not 2.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 2ad8f50 commit 76fe4f1
4 files changed
Lines changed: 94 additions & 24 deletions
File tree
- core/src
- main/java/io/questdb/client/cutlass/qwp/client/sf/cursor
- test/java/io/questdb/client/test/cutlass/qwp/client/sf/cursor
Lines changed: 12 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
321 | 321 | | |
322 | 322 | | |
323 | 323 | | |
324 | | - | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
331 | 334 | | |
332 | 335 | | |
333 | 336 | | |
334 | 337 | | |
335 | | - | |
| 338 | + | |
| 339 | + | |
336 | 340 | | |
337 | 341 | | |
338 | 342 | | |
| |||
Lines changed: 20 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
530 | 530 | | |
531 | 531 | | |
532 | 532 | | |
533 | | - | |
534 | | - | |
535 | | - | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
536 | 540 | | |
537 | | - | |
538 | | - | |
539 | | - | |
540 | | - | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
541 | 548 | | |
542 | | - | |
| 549 | + | |
543 | 550 | | |
544 | 551 | | |
545 | 552 | | |
546 | 553 | | |
| 554 | + | |
547 | 555 | | |
548 | 556 | | |
549 | | - | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
550 | 561 | | |
551 | 562 | | |
552 | 563 | | |
| |||
Lines changed: 9 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
547 | 547 | | |
548 | 548 | | |
549 | 549 | | |
550 | | - | |
551 | | - | |
552 | | - | |
553 | | - | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
554 | 556 | | |
555 | | - | |
| 557 | + | |
556 | 558 | | |
557 | 559 | | |
558 | | - | |
| 560 | + | |
559 | 561 | | |
560 | 562 | | |
561 | 563 | | |
562 | 564 | | |
563 | | - | |
| 565 | + | |
564 | 566 | | |
565 | 567 | | |
566 | 568 | | |
| |||
Lines changed: 53 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| 78 | + | |
78 | 79 | | |
| 80 | + | |
79 | 81 | | |
80 | 82 | | |
81 | 83 | | |
| |||
221 | 223 | | |
222 | 224 | | |
223 | 225 | | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
224 | 256 | | |
225 | 257 | | |
226 | 258 | | |
| |||
291 | 323 | | |
292 | 324 | | |
293 | 325 | | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
294 | 347 | | |
295 | 348 | | |
296 | 349 | | |
| |||
0 commit comments