Skip to content

Repros 744 - #748

Merged
tlwillke merged 8 commits into
batched-vector-accessfrom
repros-744
Oct 12, 2026
Merged

tlwillke merged 8 commits into
batched-vector-accessfrom
repros-744

Conversation

@jshook

@jshook jshook commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

Some review feedback for #744 in the form of unit tests for reproducing issues and fixes that pair with them.

…preload

BaseVectorLoading.forBenchmark(MultiConfig) returns PRELOAD for configs with
search or construction compression None even when -Djvector.dataset_loader=buffered
is set, although the docs, release note and PR description call the property an
explicit override. Fails at 87bb453 (PR #744).
…er comparison

For a value-shared source, randomAccessScoreProvider's score functions read both
the anchor and the compared node on every similarityTo call: 2000 source reads
for 1000 comparisons against one anchor. Fails at 87bb453 (PR #744).
Storage.close() clears point readers' channels and buffers without taking their
leases, so in-flight point reads fail with NullPointerException and can reopen a
channel after close. Timing-dependent; fails within a few rounds here at
87bb453 (PR #744).
forBenchmark(MultiConfig) now returns an explicitly set jvector.dataset_loader
as-is, so buffered applies even to uncompressed-construction and exact-search
configurations, matching the documented explicit override. Routing still
applies when buffered input comes from the YAML useDatasetPrefetching flag.
Fixes TestDatasetLoaderOverride.
randomAccessScoreProvider's value-shared path re-read node1 on every
comparison, doubling source reads in full-precision builds from a file-backed
source. The anchor is now copied on first use and kept by the score function:
creation still reads nothing, the copy can't be overwritten by later reads
through the same views, and each comparison reads only node2.
Fixes TestBuildScoreProviderAnchorReads.
Storage.close() cleared each point reader's channel and buffer without taking
its lease, so a concurrent point read could hit a null buffer or reopen a
channel that was never closed. close() now takes each reader's lease before
closing its channel, and readPointInto checks for closure after taking a
lease, so later point reads fail with IllegalStateException.
Fixes TestFvecCloseDuringPointReads.
@github-actions

Copy link
Copy Markdown
Contributor

Before you submit for review:

  • Does your PR follow guidelines from CONTRIBUTIONS.md?
  • Did you summarize what this PR does clearly and concisely?
  • Did you include performance data for changes which may be performance impacting?
  • Did you include useful docs for any user-facing changes or features?
  • Did you include useful javadocs for developer oriented changes, explaining new concepts or key changes?
  • Did you rebase your branch onto the latest main for regression testing and PR submission?
  • Did you trigger regression testing via Run Bench Main and review results?
  • Did you adhere to the code formatting guidelines (TBD)
  • Did you group your changes for easy review, providing meaningful descriptions for each commit?
  • Did you ensure that all files contain the correct copyright header?
  • Did you add documentation for this feature to the release notes directory?

If you did not complete any of these, then please explain below.

@tlwillke
tlwillke merged commit ed5f016 into batched-vector-access Oct 12, 2026
13 checks passed
@tlwillke
tlwillke deleted the repros-744 branch October 12, 2026 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants