Tracking: establish at-least-once delivery for sink connectors
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- rust
- Lĩnh vực
- backend, distributed-systems
Hướng nghiên cứu
Start with the proposed work items #4233–#4238 and the local HTTP regression sequence described here. Read #2928, discussions #3203 and #3518, and PRs #3954 and #4152 to understand existing decisions and work. Done requires an agreed contract, linked implementation and recovery tests, supported configurations, and migration and operational documentation.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
I propose tracking the remaining sink delivery work under one agreed contract, with separate implementation issues and recovery tests as acceptance criteria.
The runtime can save a consumer offset before the sink delivers the corresponding records. If delivery fails, restarting with the same consumer group can skip those records. They may remain in Iggy's retained log, but normal recovery does not deliver them.
A local HTTP regression test reproduces this sequence: the endpoint rejects a record with HTTP 503, the runtime restarts with the same consumer group after the endpoint recovers, and a later record arrives while the rejected record does not. This test covers rejection followed by restart; abrupt termination needs additional coverage.
Issue #2928 and discussions #3203 and #3518 already describe the underlying problem and proposed approaches. PR #3954, by kriti-sc, adds control over commit timing and provides implementation work to build on. PR #4152 has since improved failure reporting and accounting, but explicitly does not introduce batch replay. The status of #2927 should be reconciled with that merged work.
The proposed contract is:
For each partition, the runtime advances the recovery checkpoint only after every record it passes has satisfied the configured delivery contract, including all required destination writes. Failed or uncertain delivery remains recoverable. Recovery may produce duplicates.
Acceptance into a plugin's memory buffer must be distinct from durable delivery. Unexpected decode, transform, and serialization failures must remain unresolved until recovered or handled by an explicit policy. A configured filter is a separate outcome. If a dead-letter policy is supported, its write must succeed before the checkpoint advances, and the resulting guarantee must name that alternative destination.
Each supported sink configuration must define what its delivery acknowledgment proves. The contract also depends on source durability, sufficient retention, and eventual recovery. Missing replay data must produce a visible recovery failure.
Proposed work:
- #4233: Define the sink delivery and recovery contract.
- #4234: Implement explicit sink delivery acknowledgments and safe checkpoint advancement.
- #4235: Preserve failed records throughout the sink pipeline.
- #4236: Migrate sink plugins and document supported configurations.
- #4237: Add a shared recovery conformance suite.
- #4238: Introduce safe defaults, migration guidance, and operational visibility.
Existing issues and PRs should be linked to these work items where their scope matches. The test suite should begin alongside the contract work, with regression coverage included in each implementation change.
This tracker is complete when the agreed delivery contract is enforced for every configuration advertised as supporting it, incompatible configurations fail explicitly, required recovery tests pass in CI, and the migration and operational documentation are available.
Maintainer feedback is requested on the target contract, the initial set of supported sinks, the interface migration, and how to continue the work in #3954.
- Ngôn ngữ chính
- Rust
- Star
- 5.2k
- Fork
- 502
- Merge trung bình
- 3 ngày 11 giờ
- Pull request đã merge (30 ngày)
- 143
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/iggy
-
go good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
HTTP client treats a consumer group as a plain consumerCó thể đã có người làm @mohitduhan19 đã nhận 18 ngày trước. Đang mởbug rust server
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
apache/iggy#4408 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Add the fail-fast connection option to the Rust and Python quick-startsCó thể đã có người làm @QIW9 đã nhận 5 ngày trước. Đang mởdocs good first issue
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 92/100
apache/iggy#4261 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug python sdk
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
apache/iggy#3748 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue python
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
Issue tương tự
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 70/100
OpenZeppelin/openzeppelin-relayer#967 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
DecisionOutcome::label() / n_dosed(): engine-side mapping so downstream needs no wildcard armĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
src/runs.rs:1987: a missing --source-run-id now answers 400 "Source run ... does not exist", not 404Đang mởnightly-audit
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
antithesishq/snouty#602 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
libnativeapi/nativeapi#21 ·