Did the Kafka publication actually happen?
Separate local acceptance, acknowledgement, replicated visibility, and ambiguous caller outcomes.
Reliable publishing, consumption, and recovery—one guarantee boundary at a time.
Reviewed 2026-09-08. Reference profile apache-java-4.3.1: Apache Kafka and Java client 4.3.1, KRaft, record magic 2, ordinary transaction protocol v2, and transaction.two.phase.commit.enable=false. Feature levels, protocol versions, settings, and binary versions remain separate facts.
Responsibility map
This strip is not one total order. Progress and effects can happen in the wrong order; every lab makes that mismatch visible.
Durable ledger or local memory?
Enqueue, retry, acknowledgement, knowledge
LEO, ISR, HW, LSO, markers
Fetched, completed, requested, stored
DB/API identity, retention, authority
Each path pairs one canonical explanation with one deterministic counterexample and one next decision. The 13-part Kafka Engineering course keeps protocol depth and its existing order.
Separate local acceptance, acknowledgement, replicated visibility, and ambiguous caller outcomes.
Read LEO, HW, LSO, control records, and transaction stability as separate boundaries.
Compute the completed owned frontier, preserve real gaps, and reject stale completion.
Name the identity and smallest transaction that protects the actual sink effect.
Check disposition atomicity, identity retention, history completeness, authority, and stop conditions.
Separate protocol, schema, effective settings, lag, and application completion deadlines.
Default counterexample · D02
The server-rendered matrix below uses the same contract projection as the interactive explorer. It keeps capability, example result, counterexample, unknown evidence, and outside-profile outcomes distinct.
Choose the interface from the lifecycle you need. None of these options makes an arbitrary HTTP, email, or database effect atomic with Kafka.
| Interface | Strong fit | Boundary to keep explicit |
|---|---|---|
| Partitioned stream + traditional group | Replayable ordered history, independent subscribers, stream processing | Partition ownership, application concurrency, completed-prefix commits, and sink effects |
| Share group | Cooperative record acquisition and acknowledgement with more consumers than partitions | Acquisition expiry, acknowledgement commit, ordering, renewal, and business-effect protection |
| Dedicated job/workflow system | Scheduling, priority, cancellation, leases, orchestration, and operator workflows | Actual product-specific durability, retry, effect, and replay contracts |
Curated actions feed pure TypeScript reducers. Controls can change policy and bounded inputs; invariant results come from state, not a disconnected expected-answer field.
Local acceptance is not publication evidence
What can a local enqueue or acks 0 establish?
Producer idempotence stops before the external effect
Does an idempotent producer protect an unprotected API call?
Kafka output and progress share a bounded decision
What does a same-cluster read-process-write transaction protect?
Outbox and inbox protect local transaction boundaries
Which identity can a local DB transaction protect?
Unknown effect evidence blocks automatic retry
Can an uncertain response with unknown retention justify replay?
A topology change invalidates ordinary-profile conclusions
Which independent review replaces the Apache same-cluster profile?
Crash before dispatch and application wait expiry
Did a returned send call create durable publication evidence?
Acks 0 branches look identical to the caller
Can the caller distinguish broker delivery from a dropped request?
Leader-local success can leave an uncommitted tail
What survives when an acks 1 leader fails before replication?
Acks all waits on the current ISR
Does replication factor or min-ISR determine the response count?
Insufficient ISR rejects a fresh acks-all attempt
Does rejection prove that no earlier ambiguous attempt appended?
ISR shrinks after append
Can appended bytes coexist with timeout or post-append error?
Lost reply and identical idempotent retry
How can two transmissions produce one append?
A second application send is new protocol work
Does the same payload and key reuse the prior sequence?
A new producer session cannot infer old business intent
Does a restart deduplicate an application resend?
Non-idempotent retries can reverse intended order
What happens when a later batch succeeds before an earlier retry?
Supported sequences preserve partition/session order
Which ordering scope does idempotence actually preserve?
Acks 1 can succeed while visibility remains stalled
What does strict min-ISR change below the producer response?
Java resolves or rejects conflicting idempotence settings
Does the selected configuration actually run idempotently?
Routing and writer changes break global-order shortcuts
Can a partition-local guarantee survive a topology change?
Ordinary commit advances visibility after stable markers
Which data appears under each isolation level?
Abort leaves bytes and offset gaps
Why does visible count differ from offset span?
Replacement fencing stops old transactional progress
What does fencing fail to undo?
Commit accepted, response lost
Can the caller switch to abort after a timeout?
An open transaction blocks later ordinary data
Why can replicated data remain hidden from read_committed?
Kafka output and source offsets recover together
What waits when the prior checkpoint is still unstable?
Abort does not rewind fetched position
What must the processing loop restore before retry?
Kafka abort cannot retract an HTTP effect
What repeats when the input returns?
One decision can become visible at different times
Does atomic commit promise simultaneous partition visibility?
Ordinary timeout and client wait are different clocks
Which terminal operation may be repeated?
Stale group metadata cannot attach progress safely
May the application commit offsets independently after failure?
Two-phase extension is outside the ordinary profile
Which timeout conclusion must be withheld?
Commit the next offset
Which checkpoint follows completed offsets 10 and 11?
The first unfinished record caps the frontier
Can completed offset 12 justify skipping pending 11?
Last completed plus one can skip work
What does normal recovery do after storing offset 13?
Known source gaps are not handler holes
How does a delivered 10,12 batch advance?
Effect success and progress success are separate
Can a synchronous commit make the effect atomic?
Assignment movement does not cancel an external request
Can the old worker finish after a new owner replays?
Stale callbacks cannot advance the new incarnation
Which ownership token qualifies a completion?
Pause bounds admission, not every byte
Can one slow partition stop poll progress for another?
Shutdown drains only inside remaining authority
What may be committed at the grace boundary?
Fetched auto-progress can outrun async handlers
What does a crash skip after poll hands work away?
A newly invoked old snapshot can regress progress
Is this Java callback reordering or application logic?
Poison data needs an explicit disposition contract
May a deserialization failure advance progress automatically?
Outbox relay restart can publish twice
Which stable identity survives the relay crash?
A naive dual write can lose notification intent
What recovery record exists after the DB commit?
Inbox claim and DB mutation commit together
Can two concurrent deliveries apply the mutation twice?
External effect survives local crash
What can a replay repeat after the receipt is lost?
Provider identity and lookup can resolve repeated attempts
Which assumptions produce one provider effect?
Same key with different intent is a conflict
Did deduplication suppress a legitimate operation?
Replay can outlive effect protection
What happens after the deduplication record expires?
Log coordinates and business identity are different
Which identity survives a new publication occurrence?
Atomic source commit does not establish downstream order
What changes after routing or topology moves?
Unavailable lookup keeps the effect unknown
May recovery dispatch another effect-capable attempt?
Commit-first can lose quarantine
What durable disposition exists after the crash?
Publish-first can duplicate quarantine
Which provenance must a repeated DLQ record preserve?
One Kafka transaction can join DLQ and source progress
Which participants share the decision?
Disposition failure is not permission to skip
What must abort or stop when encoding or publication fails?
Retry topics can change processing order
Which later record can complete first?
Nested retries consume one absolute deadline
How many attempts fit before the stop condition?
Expired sink protection blocks automatic replay
Can retained source data restore an expired effect contract?
History completeness and checkpoint existence differ
Which recovery fact disappeared?
Original intent and a new operation are different actions
Which identity should redrive preserve?
Missing evidence produces an investigation, not permission
Which obligation blocks effect-capable recovery?
Canary success is one bounded observation
Which stop and verification conditions still remain?
Cross-cluster failover needs an independent authority review
Which record, checkpoint, identity, or writer authority disagrees?
One partition can supply records to two share consumers
Which traditional ownership assumption no longer applies?
An expired acquisition can repeat an external effect
What happens without a committed acknowledgement?
Local accept and server acknowledgement are separate
What does a lost acknowledgement response leave unknown?
Release, reject, and archive are not a universal DLQ
Which record state follows each acknowledgement type?
Renewal extends a lock under a bounded group contract
Does renewal create permanent authority?
Share isolation is a group-wide contract
Which records remain unavailable behind an open transaction?
A Kafka version label never creates cross-client, cross-cluster, vendor, ELR election, or two-phase-extension parity.
primary
26b251a451ce941d3d7a55e6487bcb7f16b5ad48
bounded extension
b8814509d953ce8aa241a05a9c8c8fea4d259118
A different record-acquisition and acknowledgement model. SG01–SG06 and N6 are included; the UI gate follows F08.
The guide includes strict min-ISR and ELR limits, then links the replication owner. It does not implement the complete election algorithm.
The ordinary profile disables it. D06/T12 prevent ordinary timeout conclusions from leaking into extension mode.
F09 records one pinned, one-way Apache MirrorMaker read-cutover profile. D06/R12 still require independent record, checkpoint, identity, sink, writer-authority, and failback evidence for another topology. No vendor parity badge is emitted.
Broker observations can corroborate one pinned schedule. They do not establish correlated-failure durability, every interleaving, a managed service, or an arbitrary provider.
Observed acks=0 without a broker offset, controlled Produce-response loss after append, one retained-batch retry append, and application/new-session duplicates.
Observed current-ISR acks=all, leader-only acks=1, frozen visibility below min-ISR, and fresh acks=all failure.
Observed open/commit/abort isolation, offset gaps, and controlled staggered participant visibility with one commit decision.
Observed fencing, pending stable-progress handling, proven commit with lost EndTxn responses, same-terminal retry, transactional offsets, and abort/seek recovery.
Observed pause, async snapshot regression, classic/cooperative/consumer profiles, bounded drain, ownership movement, stale effect, and stale metadata rejection.
Observed atomic business+outbox commit/rollback, duplicate relay publication after restart, scoped inbox concurrency, and a retained-operation provider stub.
Observed transactional DLQ+offset commit, nontransactional gaps, delete-retention readability loss, and compacted sparse offsets.
Pinned share acquisition, ack, release/reject, delivery limit, expiry, renewal, isolation, and correlated ACCEPT/RENEW response-loss fixtures passed.
Observed one-way Kafka 4.3.1 MirrorMaker replication, checkpoint synchronization, source loss, and manual target read cutover; writes and failback remain outside the profile.
Current method-level APIs and pinned definitions outrank simplified overviews. Source observation narrows a teaching profile; it does not become a universal client promise.
Release existence, upgrade notes, and share-group release status.
Limit: Does not establish a deployment's feature levels or managed-service support.
Kafka 4.3.1 / source commit 26b251a451ce941d3d7a55e6487bcb7f16b5ad48
Acks, idempotence constraints, retries, batching, and timeout defaults.
Limit: Java-specific defaults are not fleet recommendations.
4.3 documentation and ProducerConfig.java at tag 4.3.1
Transactional offsets, completion uncertainty, fencing, and asynchronous send.
Limit: Timing-sensitive exception paths still require controlled fixtures.
Apache Kafka tag 4.3.1
Five retained recent batch metadata entries per producer-partition.
Limit: This is not a business-ID ledger or complete recovery proof.
Apache Kafka tag 4.3.1
Min-ISR, HW advancement, pre/post-append paths, and retention settings.
Limit: The teaching model intentionally bounds pending/maximal ISR and election behavior.
Apache Kafka tag 4.3.1
Publishing/consumption guarantees, page cache, and external-store boundaries.
Limit: Historical exposition is not a current performance measurement.
Kafka 4.3 documentation
ELR availability, defaults, and strict min-ISR rationale.
Limit: Does not replace the complete election algorithm or failure-domain testing.
Kafka 4.3 documentation
Exclusive LSO bounded by HW and the first unstable offset.
Limit: A simple open-transaction description must still account for marker stability.
Apache Kafka tag 4.3.1
Position, next offsets, commits, callbacks, ownership, and stable offset fetch.
Limit: Application completion and external effects remain application responsibilities.
Apache Kafka tag 4.3.1
Auto commit, reset, static membership, poll limits, and group protocols.
Limit: Use S08/S09 for the exclusive LSO boundary.
Kafka 4.3 documentation
Producer identity, transactions, and control records.
Limit: Current APIs and defaults come from the 4.3.1 sources.
Accepted historical design
Consumer group metadata and stable transactional progress.
Limit: Does not establish arbitrary older-client support.
Accepted design corroborated by 4.3.1 source
Feature-level activation, participant registration, and marker behavior.
Limit: The two-phase extension is excluded from the ordinary profile.
Kafka 4.3 documentation and KIP-890 source path
KIP-848 GA status, switches, and policy ownership.
Limit: Future migration plans are not shipped-release evidence.
Kafka 4.3 documentation
Share acquisition, acknowledgements, and delivery attempts.
Limit: Follow-on KIPs and current source override stale original details.
Accepted design, corroborated by Kafka 4.2/4.3 releases
Explicit/implicit ack state, current config names, and group isolation.
Limit: Runtime schedules and errors require F08.
Apache Kafka tag 4.3.1
Renewal and per-group share controls.
Limit: Acceptance alone does not prove provider availability or every wire version.
Accepted follow-ons listed in Kafka 4.3 notes
Kafka-managed processing scope and exactly_once_v2.
Limit: External side effects and physical invocation counts remain outside that scope.
Kafka 4.3 documentation
Source/sink capability limits, task fencing, and error reporting.
Limit: No unspecified connector or sink is certified.
Kafka 4.3 documentation
Outbox event ID, aggregate key, and routing shape.
Limit: Does not establish universal connector EOS or failover behavior.
Debezium 3.3.0.Final
Local transaction boundaries and unique-conflict behavior.
Limit: Identity and effect contracts still require explicit design and fixtures.
PostgreSQL 18 documentation
Caller intent identity, semantic equivalence, and atomic token/effect.
Limit: Not a universal provider contract.
Reviewed 2026-09-08
Dual-write gaps, duplicate publication, and downstream obligations.
Limit: AWS guidance is not Kafka runtime evidence.
Reviewed 2026-09-08
Profile-specific producer, broker, and consumer observations.
Limit: Metrics do not count completed business operations by themselves.
Kafka 4.3 documentation
MirrorMaker replication and its bounded EOS mode.
Limit: A replication leg is not one cross-cluster application transaction.
Kafka 4.3 documentation
Batch/control records, offset gaps, and supported Java runtimes.
Limit: The browser model is not a binary codec or storage benchmark.
Kafka 4.3 documentation
G01 · documented-contract
Local producer enqueue is neither broker acknowledgement nor a durable application-intent ledger.
Limit: A separately durable outbox can establish a different application boundary.
Sources S02, S03, S23 · scenarios D01, P01
G02 · documented-contract
Acks 0 supplies no broker receipt proof, acks 1 supplies leader-local evidence, and stable-profile acks all waits on the current ISR.
Limit: This does not establish per-record media flush or every election outcome.
Sources S02, S05 · scenarios P02, P03, P04
G03 · source-observation
Min-ISR is not an acknowledgement count chosen from replication factor; under the pinned source it also constrains new HW progress.
Limit: The model bounds pending/maximal ISR and does not implement the full election algorithm.
Sources S05, S07 · scenarios P04, P05, P12
G04 · documented-contract
A negative, timed-out, or unobserved producer result can coexist with appended bytes.
Limit: The exact branch depends on action order and observed evidence.
Sources S03, S05 · scenarios P06, P07
G05 · documented-contract
Replication acknowledgement is not per-record fsync on every disk or proof against correlated failure.
Limit: A single-machine fixture cannot establish failure-domain durability.
Sources S06, S07 · scenarios P03, P04
G06 · source-observation
Producer retry identity is PID, epoch, partition, and record sequence—not payload or business identity.
Limit: The recent batch window is bounded and session-scoped.
Sources S02, S03, S04, S11 · scenarios P07, P08, P09, P13
G07 · documented-contract
Supported idempotent settings preserve their partition/session ordering scope; application resends, multiple writers, and routing changes need another contract.
Limit: No global business order is inferred.
Sources S02, S03, S26 · scenarios P10, P11, P14
G08 · documented-contract
Transactional initialization and fencing identify a writer incarnation, not a business operation.
Limit: Already-dispatched external effects remain outside the fence.
Sources S03, S11, S13 · scenarios T03, E08
G09 · source-observation
LSO is an exclusive unstable-transaction boundary bounded by HW, not an inclusive record count.
Limit: Marker stability and aborted ranges remain explicit.
Sources S08, S09 · scenarios T01, T02, T05
G10 · documented-contract
Control records, aborted ranges, compaction, and topology history can create valid offset gaps.
Limit: Visible record count cannot be reconstructed from an offset span alone.
Sources S09, S26 · scenarios T02, C04, P14
G11 · documented-contract
A commit-response timeout does not establish abort; terminal retry must preserve the chosen operation.
Limit: No universal KafkaException classifier is implied.
Sources S03 · scenarios T04, T10, R03
G12 · documented-contract
Kafka output and input progress can share one same-cluster transaction decision while participant visibility remains staggered.
Limit: This is not a cross-partition snapshot or wall-clock visibility barrier.
Sources S03, S11, S12, S13 · scenarios T06, T09, R03
G13 · documented-contract
Consumer fetched position does not rewind automatically after abort, and pending transactional progress is not a stable recovery checkpoint.
Limit: Recovery must use the selected client and group protocol correctly.
Sources S06, S09, S12 · scenarios T06, T07
G14 · documented-contract
Processing attempts may repeat even when committed Kafka output and progress meet the stated EOS contract.
Limit: External effects and physical invocation counts remain separate.
Sources S06, S18 · scenarios T06, T07
G15 · operator-judgment
Traditional consumers commit next-offset boundaries from completed owned work—not record count, fetched position, or the last out-of-order completion.
Limit: The contiguous frontier is application logic over a complete delivery ledger.
Sources S03, S09 · scenarios C01, C02, C03, C04, C10
G16 · source-observation
Java async commit callbacks follow invocation order; a newly invoked old snapshot is an application regression hazard.
Limit: Do not invent callback reordering that the Java API excludes.
Sources S09 · scenarios C11
G17 · documented-contract
Revocation, loss, and group fencing do not fence an external resource or cancel a dispatched effect.
Limit: The external system needs its own identity, authority, or fencing contract.
Sources S09, S14, S22 · scenarios C06, C07, C09, E04
G18 · documented-contract
Poll progress, heartbeats, static membership, and KIP-848 policy ownership are distinct versioned concerns.
Limit: The browser does not implement a complete coordinator or scheduler.
Sources S09, S10, S14 · scenarios C08, C09
G19 · documented-contract
An outbox closes a local DB intent gap but permits duplicate publication; event identity and routing remain explicit.
Limit: The CDC option is a declared contract, not a connector certification.
Sources S19, S20, S23 · scenarios E01, E02, E09
G20 · documented-contract
An atomic scoped inbox and DB mutation can protect one declared identity; an HTTP effect needs another contract.
Limit: Fingerprint mismatch and retention expiry remain explicit failures.
Sources S21, S22, S23 · scenarios E03, E04, E05, E06
G21 · operator-judgment
A retained source record can outlive deduplication protection, authority, or current schema meaning.
Limit: Retention clocks and restore points are independent.
Sources S05, S10, S22 · scenarios E07, E10, R07, R08, R09, R10
G22 · documented-contract
Nontransactional DLQ publication and source progress have loss/duplication windows; one same-Kafka transaction can join those Kafka participants.
Limit: Redrive effects still need their own identity and authority contract.
Sources S03, S19 · scenarios R01, R02, R03, R04
G23 · operator-judgment
Retry topics can change processing order, and a larger retry budget cannot resolve an unknown effect.
Limit: The attempt arithmetic is a bounded upper bound, not a probability model.
Sources S02, S09 · scenarios R05, R06
G24 · documented-contract
Offset lag, fetch lag, transaction visibility, and application completion deadlines answer different questions.
Limit: No universal lag-to-time or lag-to-record-count conversion is valid.
Sources S08, S09, S24 · scenarios C02, T05, R11
G25 · documented-contract
Streams, Connect, and MirrorMaker EOS modes each have narrower prerequisites than an end-to-end everything-once claim.
Limit: Connector, sink, topology, and failover contracts remain profile-specific.
Sources S18, S19, S25 · scenarios D03, D06, T08, R12
G26 · documented-contract
Share groups use record acquisition and acknowledgement state—not a traditional committed-prefix frontier.
Limit: Interactive claims require the pinned F08 runtime evidence gate.
Sources S01, S15, S16, S17 · scenarios SG01, SG02, SG03, SG04, SG05, SG06
G27 · documented-contract
Ordinary transaction timeout conclusions do not apply when the documented two-phase extension is enabled.
Limit: The extension remains a bounded reference, not an executed engine.
Sources S02, S13 · scenarios D06, T12
G28 · operator-judgment
Kafka-compatible and cross-cluster systems require independent behavior, identity, and authority evidence.
Limit: No parity badge or universal failover conclusion is produced.
Sources S25 · scenarios D06, R12
The Background Jobs Field Guide owns generic queue, lease, retry, outbox, payload, and SLO models. This guide adds Kafka-specific log, transaction, group progress, acquisition, and recovery boundaries.
Found a source conflict or a boundary that needs a tighter limit? Send a correction.