[Chore] Merge Stream results as batches across groups and data nodes
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- リファクタリング
- 明瞭さ
- 説明が足りない
- 活発さ
- 活発
- 技術スタック
- go
調査の方向性
これは実行可能なリーフではなくトラッキング用の親です。まず banyand/query/processor.go、pkg/query/logical/stream/stream_plan_merge.go、stream_plan_distributed.go、pkg/query/vectorized/stream を読んでください。記載されている Go のユニットテストと統合テストを実行し、その後、#14066 と projection boundary が利用可能になった段階で、ローカルと分散の cutover を実行可能なタスクに分割してください。完了の条件は、順序付け、重複排除、ページネーション、互換性、キャンセル、不正なレスポンス、リソース解放について、明示的なバッチマージテストがあることです。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Java
- スター
- 25k
- フォーク
- 6.6k
- 平均マージ
- 7時間 48分
- マージ済み PR(30日)
- 25
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/skywalking のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
apache/skywalking#14127 ·
メンテナーはふだん 1 日以内に返信
-
database
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
apache/skywalking#14104 ·
メンテナーはふだん 1 日以内に返信
-
[BanyanDB] Data/Schema Import and Export対応中かも @mrproliu が 16 日前に担当しました。 オープンfeature
apache/skywalking#14102 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
database feature
難易度 5/5 1週間以上 初心者へのやさしさ 38/100
apache/skywalking#14092 ·
メンテナーはふだん 1 日以内に返信
-
[Feature] Store BanyanDB's own logs in BanyanDB (self-stored logs)対応中かも @hanahmily が 28 日前に担当しました。 オープンdatabase feature
apache/skywalking#14076 · コメント 10 件 · 担当者 2 名 ·
メンテナーはふだん 1 日以内に返信
apache/skywalking の issue をすべて見る
似ている issue
-
[Bug] AI unread message badge counts a batch of new bubbles as one message対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
apache/rocketmq-dashboard#5784 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
PCL-Community/PCL-CE#3658 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
Team/Identity Server Core Type/Improvement U2
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
wso2/product-is#28553 ·
メンテナーはふだん 1 日以内に返信
-
area: logging area: parallel execution type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
testng-team/testng#3577 ·
メンテナーはふだん 1 日以内に返信