Repository navigation
feat(connectors): add sink/source connector templates, authoring guide, and blog post - #4636
Open
ryerraguntla wants to merge 6 commits into
Open
ryerraguntla wants to merge 6 commits into
ryerraguntla wants to merge 6 commits into
Conversation
Squashed for a clean rebase onto current master.
…h://github.com/apache/iggy into docs/connector-guidelines-template-and-blog-post
Contributor
|
lets wait with this PR till deferred polling PR is merged, it changes all connectors |
Contributor
Author
|
/author |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #4636 +/- ##
============================================
+ Coverage 89.78% 90.76% +0.98%
- Complexity 2146 2964 +818
============================================
Files 1343 1461 +118
Lines 291806 348126 +56320
Branches 248040 292931 +44891
============================================
+ Hits 261989 315976 +53987
- Misses 24096 25487 +1391
- Partials 5721 6663 +942
🚀 New features to boost your workflow:
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #3956
What
Adds two ready-to-copy connector crates under
core/connectors/:core/connectors/sinks/sink_template/core/connectors/sources/source_template/Each implements every framework-level requirement already expected of a production connector — config parsing with unknown-field rejection,
SecretString-wrapped credentials, connectivity validation inopen(), retry/backoff + circuit breaker viaiggy_connector_sdk::retry::RetryPolicy, batch processing / Ack-Nack cursor staging, and a canonical test suite — leaving only the backend-specific bits markedTODO(ConnectorDeveloper):ProducedMessage.idwhen one exists.Also included:
core/connectors/docs/authoring-sinks-and-sources.md— a written guide walking through the required patterns and why each one exists, meant to be cross-linked from the connector READMEs and reused as the basis for an Apache Iggy blog post.core/connectors/BLOG_POST.md— a narrative draft for the project blog announcing the templates..claude/skills/connector-pr-review/SKILL.md— a new review-checklist skill (B1-B11 blockers, convention nits) encoding review patterns mined from real apache/iggy connector PRs, so recurring review comments (secrets typing, retry/circuit-breaker gaps, cursor staging, idempotency claims, zero-delivered-still-reports-Ok, ack-path budget blowups) get caught before human review instead of during it.connector-sink,connector-source,connector-testing, andconnectors-overviewskills to cross-link the templates and the new review checklist, and to reflect the currentSource::batch_policy()/ NACK-retry-configurability SDK surface (fix(connectors): make source NACK retries configurable and observable #4269) and the current resolver/toolchain setup, replacing stale text that predated both.Cargo.toml,Cargo.lock) and README entries (sinks/README.md,sources/README.md,core/connectors/README.md) for both new crates, each withpublish = false.(
core/connectors/runtime/example_config/connectors/{sink,source}_template.toml).Why
Per the discussion in #3956: connector PRs have repeatedly lost review
cycles to the same non-backend-specific issues (secrets typed as plain
String, missing retry/circuit-breaker, config knob name drift, missingcanonical state tests, zero-delivered batches reported as success, ack-path
work with no bound on its own retry budget). Rather than re-teaching the
same framework contract PR after PR, these templates make the required
pattern the path of least resistance — a new connector starts from working,
reviewed-pattern code and only needs the backend-specific logic filled in.
The paired
connector-pr-reviewskill turns the same lessons into an automatic pre-flight check for future connector PRs.Testing
cargo build -p iggy_connector_template_sink -p iggy_connector_template_sourcecargo test -p iggy_connector_template_sink -p iggy_connector_template_source(20/20)cargo clippy -p iggy_connector_template_sink -p iggy_connector_template_source --all-targets -- -D warningscargo fmt --all --checkcargo sort --check --no-format(crate + workspace)cargo machetecargo doc -p iggy_connector_template_sink -p iggy_connector_template_source --no-depswithRUSTDOCFLAGS="-D warnings"markdownlinton every new/changed doc./scripts/ci/license-headers.sh --checkAI Usage
batch_policy()), and mining real apache/iggy connector PR review comments for the checklist content.apache/master, not a stale base.Notes for reviewers / before marking ready
mastermerges) and separately as a draft ondocs/connector-guidelines-template-and-blog-post(closed/abandoned, also under a misleadingdocs/prefix despite shipping real code — renamed to this branch for that reason). This PR is the rebuilt, rebased, re-verified version of that work, squashed to a clean history.AI Usage
If AI tools were used, please answer: