connectors: preserve failed records throughout the sink pipeline

Open
#4,235 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
rust

Research direction

Start by tracing the connector sink pipeline through decoding, transformation, serialization, and delivery, then read the accounting introduced by #4152 alongside #4233 and #4234. Done means stage failures, filtering, plugin retries, and dead-letter delivery remain distinguishable, while checkpoints and destination results preserve unresolved records correctly; tests must cover failures at each stage.

Written by the indexing model from the issue text.

Description

Parent tracker: #4232.

Carry record outcomes through decoding, transformation, serialization, and sink delivery so that a successful call for the remaining records cannot silently acknowledge records dropped earlier in the pipeline.

Acceptance criteria:

  • Unexpected failures leave the affected source records unresolved and block checkpoints from passing them.
  • Configured filtering is represented and counted separately from errors.
  • Error information crosses the plugin boundary without collapsing every failure into an indistinguishable status.
  • Retry ownership and limits are explicit, including retries already performed by plugins. Exhaustion pauses or stops affected work with an actionable error and preserves replay.
  • Failure handling bounds pending work and does not abandon records already covered by a checkpoint.
  • Any supported dead-letter policy confirms delivery to that destination before resolving the source record. Without such a policy, permanent record failures remain visible and unresolved.
  • Tests exercise failures at each stage and verify the saved checkpoint and destination results.

Depends on #4233 and uses #4234. Extend the accounting introduced by #4152 while preserving the original input record's outcome.

Dominant language
Rust
Stars
4.9k
Forks
442
Avg merge
2d 23m
Merged PRs (30d)
153

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/iggy

All issues in apache/iggy

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.