Add enhanced fan-out (EFO) support to ingestion-kinesis - #22784
Conversation
PR Code Analyzer ❗AI-powered 'Code-Diff-Analyzer' found issues on commit 19ed9c2. ⛔ Hard block: Issues at Medium severity or above will block this PR from merging.
The table above displays the top 10 most important findings. Pull Requests Author(s): Please update your Pull Request according to the report above. Repository Maintainer(s): You can Thanks. |
091d441 to
45cf03f
Compare
Add opt-in enhanced fan-out (EFO) to the ingestion-kinesis plugin. EFO reads records over a long-lived HTTP/2 SubscribeToShard push subscription with dedicated per-consumer throughput instead of sharing the GetRecords limits, bridged to the synchronous IngestionShardConsumer.readNext pull contract. Enable with enable_fanout: true and provide either fanout_consumer_arn or fanout_consumer_name (auto-registered/reused). Default polling path and existing settings unchanged. Signed-off-by: Yui Numazawa <yuinuma@gmail.com>
45cf03f to
19ed9c2
Compare
|
Thanks for the automated review. Addressing the Code-Diff-Analyzer findings: New dependencies (high) — both are required for enhanced fan-out and cannot be dropped:
Security policy (medium/low) — the pre-existing
Could a maintainer review and, if acceptable, apply the |
Description
Adds opt-in enhanced fan-out (EFO) support to the
ingestion-kinesisplugin. With EFO, each primary shard reads records over a long-lived HTTP/2SubscribeToShardpush subscription with dedicated per-consumer throughput, instead of sharing the stream-wideGetRecordslimits. The push subscription is bridged to the synchronousIngestionShardConsumer.readNextpull contract via a small demand-controlled queue (backpressure propagates to the subscription).How to use
enable_fanout: true(defaultfalse) opts in.fanout_consumer_arn— a pre-registered consumer ARN, used as-is, orfanout_consumer_name— the plugin registers the consumer (or reuses it if it already exists) and caches the ARN per stream. Registration is idempotent, tolerant of concurrent registration, and waits for the consumer to becomeACTIVE.Notes
SubscribeToShardTRIM_HORIZON/LATEST, so empty shards work correctly.Backward compatibility
GetRecords) path and all existing settings are unchanged. The existingfanout_consumer_arnbehavior is preserved and takes precedence over auto-registration.Testing
./gradlew :plugins:ingestion-kinesis:precommit :plugins:ingestion-kinesis:testpasses.Out of scope / follow-ups
Check List
--signoff.