Iggy provider, deep e2e suites, GA hardening (0.4.0) - #3
Merged
Merged
Conversation
Provider: Apache Iggy backend (feature `iggy`, SDK 0.11 / server 0.9) — subject-category=topic mapping with client-side filter narrowing, durable subscriptions as consumer groups with explicitly stored offsets (at-least-once, last-consumed convention), subscribe-time head probing for New/Last positioning, provider-owned connect deadline, PAT or password login; fail-closed where the broker cannot honor the contract. Test assets: cross-provider conformance suite (tier 0 on every provider x7 deep scenarios, tier 1 persistent-only x5), feature e2e suites (pipeline, routing/bridge, cron, crypto, CloudEvents, messaging, DLQ/schema/sinks completion, error paths), 32-row iggy contract matrix fully implemented incl. poison-message tolerance, opt-in chaos suite (iggy + nats restart mid-stream, PAT login). Fixes surfaced by the deep e2e: broker routing failures now reach the DLQ (previously logged only), wildcard pattern matching corrected in InMemoryMessaging, NATS durable consumer names sanitized (JetStream rejects '.','*','>' — migration warning in CHANGELOG), NATS history Last->All, Iggy ByStartTime positioning held until a poll returns messages, schema-registry setter symmetry, bounded e2e connect retry. GA hardening: unit coverage measured (82.9% lines lib-only), criterion baselines in README, minimal core cross-compiles for linux x64/arm64 + windows, crate CI workflow (3-OS matrix + broker service containers + chaos + coverage), CHANGELOG 0.4.0 with migration notes and the known upstream iggy 0.9.0 restart-replay panic (client_id 0 reserved) that the chaos suite found. Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
…p-if-unreachable into a hard failure; CI service jobs set it Without this, a service container that never started yields a green build of silently skipped e2e suites. Verified in both directions against a live and a dead iggy container. Co-Authored-By: Claude Code <noreply@anthropic.com>
Merge of feat/iggy-provider-ga-local (unrelated-histories) onto origin/main, resolved per file: - nats/client.rs history: keep main's bounded pending-aware scan (already fixed DeliverPolicy Last->All in #2) - store.rs: keep GA additions (set_schema_registry, from_provider, broker DLQ wiring) + adopt main's subscription_consumer_name helper at BOTH call sites (the second site still used the '.'-only replace — latent bug this merge surfaced and fixes) - nats_integration.rs: keep main's superset tests (Require-NATS fail-closed, single-thread discipline) + pid-first subject isolation so re-runs on a shared server never overlap old wildcard streams - CI: main's quality/jetstream jobs + new Apache Iggy job (digest-pinned nats stays; iggy container with seccomp=unconfined, single shard, 2s rebalance) + iggy clippy in quality - README: main's (incl. zh-CN switcher) + iggy provider section, provider table row, Operations section - Cargo.toml/lib/provider/mod/messaging: GA side (0.4.0, iggy feature, symmetric wildcard fix) Merged-tree verification: default 283 / nats+iggy 249 (require-brokers fail-closed mode), clippy -D warnings clean both feature sets, fmt clean. Co-Authored-By: Claude Code <noreply@anthropic.com>
The umbrella A3S_EVENT_REQUIRE_BROKERS made the iggy job (which starts only an iggy container) fail-closed on all 12 NATS conformance scenarios — first remote run failed exactly there. Each job now gates only the broker it starts; the umbrella var remains for local all-broker runs. Co-Authored-By: Claude Code <noreply@anthropic.com>
--all-targets executes the criterion bench target, which rejects --test-threads (harness = false). --tests covers lib + integration suites and skips benches. Co-Authored-By: Claude Code <noreply@anthropic.com>
iggy 0.9.0 intermittently panics on boot/restart replay (apache/iggy#4361, six reproductions today), which can kill the server mid-suite and fail the job through the REQUIRE_IGGY fail-closed gate — correctly. One retry on a fresh container keeps CI signal honest: a genuine regression fails twice. Co-Authored-By: Claude Code <noreply@anthropic.com>
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.
Summary
iggy, SDK 0.11 / server 0.9): category=topic mapping with client-side filter narrowing, durable subscriptions as consumer groups with explicitly stored offsets (at-least-once, last-consumed convention), subscribe-time head probing for New/Last, provider-owned connect deadline, PAT/password login. Fail-closed where the broker can't honor the contract (expected_sequence,LastPerSubject); documented no-ops (max_deliveretc., single-partition topics).set_schema_registry/from_providerAPI symmetry.A3S_EVENT_REQUIRE_BROKERS/_REQUIRE_NATSfail-closed harnesses (dead service container fails CI instead of skip-passing green), pid-first subject isolation, criterion baselines, unit coverage 82.9%, CHANGELOG 0.4.0 with migration notes, GA readiness audit.Known upstream issue
Iggy server 0.9.0 intermittently panics on restart boot replay (
client_id 0 is reserved for internal use) — 4 reproductions locally; draft indocs/upstream-iggy-restart-panic.md. Until fixed upstream theiggyfeature is documented as not GA-hardened (memory/nats are).Verification
nats,iggy: 249 passed / 0 failed (require-brokers mode, live brokers)-D warningsclean on both feature sets; fmt clean;cargo publish --dry-runclean🤖 Generated with Claude Code