connectors: add a sink recovery conformance suite

Open
#4,237 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

Begin fixture development with #4233, then read the related implementations in #4234, #4235, and #4236 and inspect the actual HTTP sink and its acknowledgment boundaries. Done means the reusable suite covers the listed recovery scenarios, runs in CI, and supported plugins have coverage without missing destination records.

Written by the indexing model from the issue text.

Description

Parent tracker: #4232.

Build reusable failure fixtures and assertions for the agreed delivery contract. Verify destination record identities and saved recovery positions independently of the runtime's processing counters.

Required scenarios:

  • Rejected delivery followed by restart and successful replay through the actual HTTP sink.
  • Destination success followed by abrupt termination before checkpoint completion. Duplicates are permitted; missing records are not.
  • Buffered acceptance, partial delivery, and failed flush followed by recovery.
  • A failed record followed by later completion, including multiple partitions.
  • Checkpoint timeouts where the server did and did not persist the update.
  • Restart with delayed completions from the previous instance, and ownership changes where supported by the agreed contract.
  • Decode and transform errors, intentional filtering, and any supported dead-letter policy.
  • Incompatible plugins and unavailable source records during recovery.

Use controlled synchronization and fault injection to target the relevant boundaries. Include abrupt process termination so graceful shutdown cannot hide missing delivery barriers.

The common suite must run in CI, and supported plugins must have coverage for their actual acknowledgment boundary. Begin fixture development with #4233; add and run the relevant tests as #4234, #4235, and #4236 are implemented.

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.