Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[BanyanDB] Stream write callback reports success for events it did not store

未关闭
#14,158 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@AnKiT-GaRG2 已经在做这个了。

开始于 2026年10月26日。

  • #1443 来自 @AnKiT-GaRG2 —— 未关闭

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
go

调研方向

Start with banyand/stream/write_standalone.go, then read the error forwarding paths in banyand/queue/local.go and banyand/queue/sub/helpers.go and how batch statuses are applied in banyand/liaison/grpc/stream.go. Check the corresponding callbacks in banyand/measure and banyand/trace. Done means failures before any event is stored reach the caller, while partial and index-write failures do not cause stored events to be retried as failures.

由索引模型根据 Issue 内容生成。

描述

Summary

writeCallback.Rev (banyand/stream/write_standalone.go) logs each failed event and continues, and always returns an empty response. The caller gets STATUS_SUCCEED for elements that were not stored.

For example, for a missing group, handle fails in prepareElementsInGroup (cannot load tsdb for group). Rev logs cannot handle write event and returns no error.

Observed

With native self-stored logs (apache/skywalking-banyandb#1419) on a standalone node, a forced delete of _monitoring_log lost 3 events. native_log_written_total rose for them, and every native_log_dropped_total reason stayed 0.

Notes for a fix

  • The error reply path already exists: localBatchPublisher.Close (banyand/queue/local.go) and the data-node sub server (banyand/queue/sub/helpers.go) forward a *common.Error, as CheckHealth does for disk-full.
  • The liaison applies one status to every message it sent to a node in a batch (banyand/liaison/grpc/stream.go). Reporting an error on a partial failure would mark stored elements as failed, and a retrying client would store them twice. Report an error only when nothing in the batch was stored, or report per element.
  • Index-write failures happen after the elements are stored, so they should stay logged only.
  • banyand/measure and banyand/trace use the same pattern.

Effect on #1419

#1419 does not change this callback. Until it is fixed, events lost while the log destination is missing are counted as written, so a test cannot observe that loss.

主要语言
Java
星标
25k
派生
6.6k
平均合并
16 小时 35 分钟
30 天内合并 PR
32

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

apache/skywalking 的其他 Issue

查看 apache/skywalking 的全部 Issue

相似的 Issue

更多 Java Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。