What
The remaining semantic-parity, feature, and productionization work for the native Kafka source. The source is built, default-on, and decisively faster than the shallow path on every format (divergences/19, docs/optimizations.md); per-partition watermarks/idleness and specific-offsets/topic-pattern startup have shipped.
Correctness parity comes before expanding coverage or publishing further exactly-once Kafka comparisons.
Flink checkpoint and consume semantics — highest priority
Checkpoint-performance validation
Kafka observability and identity parity
Feature gaps
Productionize the fast path
Acceptance gate
Before this issue's semantic-parity section is considered complete, run native-vs-stock Flink parity tests for:
- normal checkpoint/restore and rescale;
- completed-checkpoint Kafka offset visibility and failed asynchronous commits;
- empty bounded partitions and start == stop;
- appends after latest-offset capture, proving no overshoot;
read_committed aborted transactions/control records at the bounded tail;
- null values at the middle and tail of a partition;
- broker/auth/authorization/invalid-offset failures;
- group-offset startup with each reset strategy;
- watermark-alignment pause/resume; and
- bounded and unbounded multi-partition consumption.
All performance measurements must use the release bench profile with the Kafka and mimalloc features, and must report checkpoint/recovery costs alongside steady-state throughput.
What
The remaining semantic-parity, feature, and productionization work for the native Kafka source. The source is built, default-on, and decisively faster than the shallow path on every format (
divergences/19,docs/optimizations.md); per-partition watermarks/idleness and specific-offsets/topic-pattern startup have shipped.Correctness parity comes before expanding coverage or publishing further exactly-once Kafka comparisons.
Flink checkpoint and consume semantics — highest priority
KafkaPartitionSplitReader: emit only records whose offsets are below the stop, finish when the actual consumer position reaches it, and finish immediately when start >= stop. Cover empty partitions, records appended after stop capture, and multiple partitions independently.read_committedcompletion control-record aware. Aborted transactional records and control markers advance Kafka's position without producing application records; they must still let the split reach its stop rather than hang at the tail.auto.offset.resetexactly. In particular, absent committed offsets with no explicit reset strategy must fail (none) like Flink rather than inherit librdkafka'slatestdefault. Test explicit earliest/latest/none plus missing and out-of-range committed offsets.commit.offsets.on.checkpointis enabled. Recovery correctness continues to come exclusively from Flink checkpoint state; Kafka commits are external monitoring state and a commit failure must not fail or corrupt a completed checkpoint. Include finished splits and discard pending commits from older checkpoints exactly asKafkaSourceReaderdoes.Checkpoint-performance validation
2ebf873completes a checkpoint, fails and restarts the task, restores native split state, and proves 10,000 records remain unique through an exactly-once Kafka sink plusread_committedverifier.3b2c22arestores the native source into Flink's checkpointed filesystem sink and proves 10,000 records remain gap-free and unique independently of Kafka transaction visibility.Kafka observability and identity parity
wakeUp()currently relies on the 100 ms bounded poll timeout. Keep it only if cancellation, checkpoint shutdown, and partition discovery/reassignment tests show Flink-equivalent responsiveness; otherwise wire librdkafka queue/consumer wakeup.Feature gaps
key.format/ multi-format tables — currently fall back.ssl+gssapi-vendoredrdkafka features (heavier build); the config translator already emits the config, so this is a build-features + verification item.Productionize the fast path
mimallocfull validation — the symbol-level link-alias check passed in a container build (aliases bind library-locally, mirroring the macOS result), but a full suite + benchmark-ladder run on a Linux host is still outstanding before recommending the feature there unreservedly._mi_subproctoday —divergences/19). v3's cross-thread free is markedly faster than v2's on the raw-consume pattern (5.3M/s vs 3.4M/s micro).crc32c.cis x86 SSE4.2 only). Would let us re-pincheck.crcs=trueat ~no cost on ARM.Acceptance gate
Before this issue's semantic-parity section is considered complete, run native-vs-stock Flink parity tests for:
read_committedaborted transactions/control records at the bounded tail;All performance measurements must use the release
benchprofile with the Kafka andmimallocfeatures, and must report checkpoint/recovery costs alongside steady-state throughput.