[Feature] Replace Bluge with a native ICE-compatible inverted index
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
Direzione di ricerca
Questo è un tracker generale, non un candidato all’implementazione. Inizia con la leaf issue ordinata #14008, quindi procedi con #14009 fino a #14012 man mano che i blocker vengono risolti. Il lavoro complessivo è completato quando tutti i caller indicati usano l’indice nativo, i gate di compatibilità e recupero vengono superati e i criteri per la rimozione della dipendenza sono soddisfatti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Replace runtime Bluge/ICE with a minimal BanyanDB-owned inverted index while preserving ICE v3 and snapshot v3. BanyanDB owns index behavior; this is not a new-format migration.
The behavioral and compatibility authority remains BDB-NIDX-SPEC-001 revision 0.2, introduced by skywalking-banyandb#1306 and refined by skywalking-banyandb#1307. The tracker hierarchy below refines implementation granularity so each automated TDD run owns one observable seam and one mergeable live-caller replacement.
Boundary
Public pkg/index/ contracts remain stable for callers. Native implementation types are internal; no Bluge, ICE, or bluge_segment_api type may escape. The five top-level NIDX issues are tracking workstreams, not implementation candidates:
- bounded direct read-only operations;
- Property shard index;
- per-segment series
sidx; - Stream element
idx; and - remaining administration plus dependency removal.
TDD execution model
The TDD workflow selects the lowest-number open issue carrying both database and Backlog. Therefore:
- never apply
Backlogto this umbrella or a workstream parent; - only the oldest unblocked leaf may carry
Backlog; - a successor is not unblocked until its predecessor PR merges;
- create downstream leaves just in time, after their blocker has taught us the real seam; and
- every leaf must switch a named production/CLI caller in its merge—no fixture-only, parser-only, codec-only, shadow-only, or test-only leaf.
graph LR
A["NIDX-01A<br/>baseline count"] --> B["NIDX-01B<br/>generations + deletions"]
B --> C["NIDX-01C<br/>stored migration walks"]
C --> D["NIDX-01D<br/>exact schema walks"]
D --> E["NIDX-01E<br/>repair search-after"]
E --> P["decompose NIDX-02<br/>from merged seams"]
P --> S["decompose NIDX-03"] --> T["decompose NIDX-04"] --> R["decompose NIDX-05"]
Pre-filing all downstream leaves would be horizontal slicing: their contracts would describe interfaces that do not exist yet and would be stale when selected. File them only when the preceding workstream closes; their issue numbers will then naturally follow dependency order.
Current executable leaves: NIDX-01
- #14008 — baseline single-segment
ReadOnlyDocCount - #14009 — multi-segment generations and deletion masks, blocked by #14008
- #14010 — match-all stored walks for migration sources, blocked by #14009
- #14011 — exact-term/OR schema walks, blocked by #14010
- #14012 — Property repair tuple search-after, blocked by #14011
Each leaf owns checked-in compatibility-writer fixture bytes, literal expected values, one pre-agreed behavioral seam, RED and e2e commands, focused race/package suites, immutable-file proof, typed bounded corruption behavior, and explicit rollback.
Compatibility and durability contract
- Native readers open supported historical ICE v3/snapshot directories and return canonical logical results.
- During the retirement window, the pinned legacy oracle opens native output and can query, merge, restart, and externally receive it where applicable.
- No new disk version, opening-time migration, replay, or rewrite is allowed merely to remove dependencies.
- Required CRC32 fields remain layout bytes only; native code never calculates, validates, caches, or uses them.
- Publication is atomic; restart selects a complete preceding or new generation, never a partial snapshot.
- Malformed input returns bounded typed errors without panic, hang, leak, or unbounded allocation.
- Native index code uses BanyanDB database ownership for writer exclusion; it creates and requires no index-local PID or lock file.
- Read-only operations create no runtime file and do not change bytes, mtimes, or directory entries.
Required final product surface
- Bounded reads: committed generation, visible count, match-all stored walk, exact term/OR, deletion masks, and Property repair search-after.
- Property: upsert/delete, stored fields, required filters/sort, callbacks, snapshots, recovery, expiry merge, GC, repair, and backup.
- Series: field-aware mutation/projection, identity matching/dictionaries, filters/sort, index-mode Measure, snapshots, cache reset, and mixed-version receive.
- Stream elements: batch/NRT, required filters/analyzers, paired postings, doc-value sort, snapshot/restart/receive.
- Administration: verify, rebuild, union/dedup, reconstruction, migration output, dump, and final dependency removal.
BM25, boosts, phrase/fuzzy/geo, highlighting, facets, explanations, generic collectors, and plugin compatibility remain out of scope.
Lexical non-regression
Repository changes for every implementation leaf before the final removal may delete existing references but must add zero new case-insensitive bluge tokens and zero matching tracked paths. The gate includes imports and aliases, function/type/variable names, filenames and runtime names, strings, comments and messages, tests, fixture/provenance data, scripts, configuration, and generated assets. Compatibility evidence uses neutral legacy oracle or compatibility writer labels plus an immutable revision or content hash rather than adding a retired module name.
This lexical gate applies to repository changes, not to issue or archived-design prose that names the dependency in order to specify its removal.
Completion criteria
- Every leaf is merged and its named caller is native; no dormant native implementation lands.
- Product, historical-fixture, two-binary, crash, corruption, race, resource, and performance gates pass for the applicable workstream.
- Operational metrics, mismatch artifacts, recovery guidance, and rollback instructions are exercised.
- NIDX-01 through NIDX-04 add no new case-insensitive
blugetoken or matching tracked path in active repository surfaces. - The last NIDX-05 removal leaf deletes every pre-existing case-insensitive
blugetoken and matching tracked path outside archived design/research evidence and Git history; no alias, filename, runtime name, fixture metadata, or generated license remains. - Final dependency scans find no retired runtime or CLI edge; compatibility fixtures use neutral oracle identity and immutable hashes.
Top-level workstreams
- NIDX-01 — bounded read-only access, with five ordered TDD leaves above
- NIDX-02 — Property shard index, decompose after NIDX-01 closes
- NIDX-03 — per-segment series
sidx, decompose after NIDX-02 closes - NIDX-04 — Stream element
idx, decompose after NIDX-03 closes - NIDX-05 — administration and dependency removal, decompose after NIDX-01 through NIDX-04 close and retirement is approved
- Lingua principale
- Java
- Stelle
- 25k
- Fork
- 6.6k
- Merge medio
- 12h 56m
- PR unite (30g)
- 47
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/skywalking
-
[Bug] Standalone multi-group Measure aggregation returns one row per groupForse già presa @hanahmily l’ha presa oggi. Apertabug database
apache/skywalking#14198 · 2 assegnatari ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] [BanyanDB] MCP server ignores .env values and silently accepts malformed numeric/TRANSPORT settingsForse già presa @wanjinhao1 l’ha presa 1 giorno fa. Apertabug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
apache/skywalking#14194 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] BanyanDB trace block metadata format changed in 0.11 without a file format version bumpForse già presa @hanahmily l’ha presa 10 giorni fa. Apertabug database
apache/skywalking#14169 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
chore CLI database
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
apache/skywalking#14168 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[BanyanDB] Stream write callback reports success for events it did not storeForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
apache/skywalking#14158 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/skywalking
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
scylladb/scylla-cdc-source-connector#402 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ahmedmmordi/store-app#8 ·
-
jhipster heroku fails on heroku git:remote when reusing an existing app outside a git repositoryApertaarea: triage theme: undefined
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
jhipster/generator-jhipster#36018 ·
I maintainer di solito rispondono entro 1 giorno