[Chore] Merge Stream results as batches across groups and data nodes
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
- Tipo di issue
- Refactoring
- Chiarezza
- Da chiarire
- Stato di attività
- Attiva
- Stack tecnologico
- go
- Ambito
- backend, distributed-systems, observability-sre
Direzione di ricerca
Questo è un parent di tracciamento anziché una leaf eseguibile; leggi prima banyand/query/processor.go, pkg/query/logical/stream/stream_plan_merge.go, stream_plan_distributed.go e pkg/query/vectorized/stream. Esegui gli unit test e i test di integrazione Go elencati, quindi suddividi i cutover locale e distribuito in attività eseguibili dopo che #14066 e il confine della proiezione saranno disponibili. Il lavoro è completato quando sono presenti test espliciti di batch merge per ordinamento, deduplicazione, paginazione, compatibilità, cancellazione, risposte malformate e rilascio delle risorse.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Remove intermediate Element materialization from Stream result merging and deduplication. Follow-up to #14066 under #13998.
Size audit and dependencies
Classification: tracking parent, not an executable leaf or automated implementation task.
Boundaries: local multi-group dispatch using MergeGroupElements, and the distributed coordinator that currently decodes frames into Elements before merging.
These are separate production cutovers and must become separate executable tasks.
Blocked by: #14066 via BanyanDB PR apache/skywalking-banyandb#1326.
Related dependency: #14067. Coordinate with that workstream for full filtered/hidden-tag coverage; basic frame-input coordinator merging can be sliced independently. Do not start a child whose required projection boundary is not yet merged.
Requirements
R1. Merge and deduplicate batches directly for both local multi-group and distributed callers.
R2. Preserve ordering, selected duplicate values, and global offset/limit behavior. Retain internal sort keys even when clients do not project ordering tags.
R3. Accept frame and protobuf node responses for tracing and mixed-version compatibility. Convert protobuf input at the compatibility boundary, rather than forcing frame inputs back into Elements.
R4. Materialize final Elements only where the client output requires them; release batch resources on completion, cancellation, and malformed responses.
Concrete oracle
Source 1: A(key=1), B(key=3)
Source 2: A(key=1), C(key=2)
The two copies of A are identical. Ascending order with offset 1 and limit 2 returns C, B. Exercise the same oracle across batches, across local groups, and across data-node replies. Specify duplicate-version and equal-key fixtures separately when defining each executable child; do not invent a new tie rule as a side effect of the cutover.
Completion criteria and RED-test direction
- Real local and distributed callers use batch merge/deduplication, including cross-batch duplicates and pagination.
- Mixed frame/protobuf replies preserve the oracle and tracing information.
- Path-sensitive tests fail if frame inputs are materialized into Elements before merging. Output assertions alone are not RED because the current row merge can return the same answers.
- Cancellation, malformed replies, and batch release are covered in each caller cutover.
- Benchmark comparisons quantify allocation changes; no new wire format or unproved bounded-memory guarantee is required.
Relevant code: banyand/query/processor.go, pkg/query/logical/stream/stream_plan_merge.go, pkg/query/logical/stream/stream_plan_distributed.go, and pkg/query/vectorized/stream.
go test ./banyand/query ./pkg/query/logical/stream ./pkg/query/vectorized/stream/...
go test ./test/integration/standalone/query/... ./test/integration/distributed/query/...
Out of scope
Changing filter-first semantics, timestamp under-fill behavior, or wire formats; implementing Stream filtering/projection itself (separate workstream).
Parent: #13998.
Compatibility and review policy
- Preserve existing on-disk and wire formats and mixed-version compatibility. Any necessary protocol change requires a separately reviewed compatibility contract.
- Use explicit, hand-calculated expected results; do not depend on the removed row engine as the test oracle.
- Human review enforces the no-new-row-path policy. A row-call-site lint guard is not required.
- Lingua principale
- Java
- Stelle
- 25k
- Fork
- 6.6k
- Merge medio
- 7h 48m
- PR unite (30g)
- 25
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
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
apache/skywalking#14127 ·
I maintainer di solito rispondono entro 1 giorno
-
database
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
apache/skywalking#14104 ·
I maintainer di solito rispondono entro 1 giorno
-
[BanyanDB] Data/Schema Import and ExportForse già presa @mrproliu l’ha presa 16 giorni fa. Apertafeature
apache/skywalking#14102 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
database feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
apache/skywalking#14092 ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature] Store BanyanDB's own logs in BanyanDB (self-stored logs)Forse di nuovo libera @hanahmily l’ha presa 28 giorni fa e non c’è nessuna pull request aperta. Apertadatabase feature
apache/skywalking#14076 · 10 commenti · 2 assegnatari ·
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 68/100
Netcracker/qubership-integration-platform#1046 ·
I maintainer di solito rispondono entro 2 giorni
-
`check_java_version()` fails when Java path contains spaces (Windows / Git Bash, `C:\Program Files`)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Fix Math.ceilDiv wrong result for exact positive divisionsForse già presa @pamod-madubashana l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
scala-native/scala-native#5094 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] AI unread message badge counts a batch of new bubbles as one messageForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
apache/rocketmq-dashboard#5784 ·
I maintainer di solito rispondono entro 3 giorni
-
[i18n] 安装实例完成后的成功提示未正确本地化Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
PCL-Community/PCL-CE#3658 ·
I maintainer di solito rispondono entro 1 giorno