[Feature] Replace Bluge with a native ICE-compatible inverted index
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Este es un tracker general, no un candidato de implementación. Empieza con la issue hoja ordenada #14008 y luego sigue con #14009 hasta #14012 a medida que se resuelvan los bloqueadores. El trabajo general termina cuando todos los callers mencionados usan el índice nativo, se superan los gates de compatibilidad y recuperación, y se cumplen los criterios de eliminación de la dependencia.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Java
- Estrellas
- 25k
- Forks
- 6.6k
- Merge medio
- 14 h 17 min
- PR fusionados (30 d)
- 39
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/skywalking
-
[BanyanDB] Flaky test: TestExportRelay_TwoRelaysShareOneRatePosiblemente ocupada @hanahmily la tomó hace 5 días. Abiertodatabase test
Dificultad 3/5 1-2 días Aptitud para principiantes 66/100
apache/skywalking#14175 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Bug] BanyanDB trace block metadata format changed in 0.11 without a file format version bumpPosiblemente ocupada @hanahmily la tomó hace 8 días. Abiertobug database
apache/skywalking#14169 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
chore CLI database
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
apache/skywalking#14168 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[BanyanDB] Stream write callback reports success for events it did not storeQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
apache/skywalking#14158 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Chore] Merge distributed Stream replies as batches in the liaison coordinatorPosiblemente ocupada @qi-wutu la tomó hace 2 días. Abiertodatabase
Dificultad 4/5 3-5 días Aptitud para principiantes 58/100
apache/skywalking#14157 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/skywalking
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
a2aproject/a2a-java#1275 ·
Los mantenedores suelen responder en 1 día
-
module/ftp Type/Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ballerina-platform/ballerina-library#9476 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
anwilli5/coin-collection-android-US#515 ·
Los mantenedores suelen responder en 1 día
-
status: waiting-for-triage type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
spring-projects/spring-integration#11654 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 Menos de una hora Aptitud para principiantes 70/100
Vakore/ZappierGames#248 ·