[BUG] Lucene: defer vector-format dependency initialization until use
Nobody has claimed this yet.
- Dominant language
- Cuda
- Stars
- 854
- Forks
- 236
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 62
Description
Problem
Several cuvs-lucene KnnVectorsFormat providers resolve optional/version-specific implementations in eager static initializers. Lucene SPI discovery instantiates registered providers, so one initialization failure can poison unrelated codec resolution with ExceptionInInitializerError.
Proposed change
- Defer provider and flat-format construction until
fieldsReaderorfieldsWriteris used. - Safely publish cached instances.
- Preserve the original failure as the cause.
- Add fresh-JVM SPI enumeration and side-effect-free construction coverage.
Keep public names, defaults, and persisted formats unchanged. In particular, the existing binary-quantized provider must retain its released legacy flat-vector layout until migration support is implemented separately.
Related to #2512.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue points to cuvs-lucene KnnVectorsFormat providers and their fieldsReader/fieldsWriter paths; begin by tracing eager static initialization and Lucene SPI enumeration in a fresh JVM. Done means construction is side-effect-free, failures remain causes, names, defaults, and persisted formats stay unchanged, and coverage exercises SPI enumeration plus both use paths.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- search
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100