You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: PLE gather reissues already-prefetched reordered and duplicate keys #2622
PleTable::gather_batch uses positional equality for Direct-mode prefetched keys. After prefetching A,B,C,D,E,F, gathering D,E,F,A,B,C reissues 96 requested rows even though every 16-row vector is already prefetched. Prefetching A once and gathering A,A,A reissues 48 requested rows because prefetches are deduplicated while the fast path requires at least as many slots as requested tokens.
Expected: reuse existing immutable prefetched slots and decode into requested order. This is a redundant-request mechanism; no serving latency or physical disk-I/O saving is claimed.
There is also a related cleanup defect in the same successful-match branch: on the first failed collect, it clears n_prefetch without draining subsequent outstanding tickets. A narrow proposed fix drains all tickets, preserves the first error, and returns without decoding after a failure. Failure handling is source-reviewed; runtime fault injection has not been performed.
Reproduction: open a finite tiny IQ4_NL GGUF in Direct mode, call prefetch_rows for the vectors above, and compare the requested-row counter in io_report before/after gather_batch. Exact executed fixture and evidence. The fixture's local include path needs adjustment outside its original checkout.
Strata version, GPU, OS
Upstream main 296b59d (0.1.44.1), Linux; CPU-only PleTable/PleReader/DirectFile reproduction, g++ 13.3.0, C++17/O2/pthreads. No GPU access required. Shared PleTable with the SYCL tree's host reader/file implementation was tested; full CUDA/HIP backend builds are not claimed.
Engine log
Both baseline and patched CPU harnesses exit 0, 44 cases per arm (88 total): 11 cases x cache 0/256 x worker off/on. All successful output bytes match an independently opened Mmap reference, and guards, finite references, logical byte accounting and request counts pass. Permutation: 96 -> 0 additional requested rows; duplicates: 48 -> 0; subset: 32 -> 0; extra-prefetch subset: 16 -> 0. Missing/over-limit/pending behavior retains expected counts. Runtime fault injection and out-of-range coverage are absent.
Searched existing issues/PRs on 2026-10-15 for PLE prefetch, gather_batch and prefetch_keys. Related PRs #1516, #2073 and #2326 touch this area but retain positional matching; no exact duplicate was found. Search is keyword-based, not an exhaustive review of every open diff.
We're resetting the tracker for 0.2.0-beta. There are more than 1,300 open issues and pull requests, too many for us to read properly, so we're closing everything that isn't being worked on right now. Closed here does not mean rejected.
To reopen it takes about two minutes:
Re-test on 0.2.0-beta. It may already be fixed. Write down what you see.
Start the title with its area: [Engine], [GUI], [TUI], [Benchmark], [Docs] or [Other].
Fill in the parts of the issue form: what happened, the Strata version, your graphics card, memory and system.
Comment /reopen. A check runs and either reopens the issue or lists what is still missing.
Activity
ple: gather_batch reuses prefetched keys that were reordered or dupli…
Merge f-145-fix3: #2622 PLE gather, #2267 config args, #2644 split sh…
Merge upstream main (477ac13, 0.1.45): the server, setup, docs and up…
PLE: gather_batch は先読みした鍵を順番や重複によらず使い直す(Niko1221#2622、upstream 3638154)
Niko1221 commentedon Oct 19, 2026
Thanks for taking the time to report this.
We're resetting the tracker for 0.2.0-beta. There are more than 1,300 open issues and pull requests, too many for us to read properly, so we're closing everything that isn't being worked on right now. Closed here does not mean rejected.
To reopen it takes about two minutes:
/reopen. A check runs and either reopens the issue or lists what is still missing.The rules are in CONTRIBUTING.md.
ple: gather_batch reuses prefetched keys that were reordered or dupli…
ple_reader_test: this branch's PLE table (IQ4_NL and Q8_0; direct, ma…