Skip to main content
Source baselineNereuscommit c820391dc1de·verified 2026-08-07·authority reader-facing-summary

Read boundaries

Logical boundaries​

Request positionResult
offset < trimOffsetOFFSET_TRIMMED; old physical bytes are not returned to a normal reader.
trimOffset <= offset < committedEndOffsetResolve and read a committed range.
offset >= committedEndOffsetNormal EOF for the current snapshot.

The stream lifecycle also matters: ACTIVE is readable/writable, SEALED is readable but cannot append, CREATING is normally retryable, and DELETING/DELETED reject or treat the stream as absent according to the adapter contract.

Entry boundary modes​

EXACT_START​

The first returned entry must start at the requested logical offset. This is the normal Pulsar Entry behavior.

CONTAINING_ENTRY​

The first returned entry may contain the requested offset. For example, a Kafka ranged entry [100,104) can be returned when a fetch starts at 102; the adapter receives the complete RecordBatch and applies Kafka's semantic boundary without cutting its bytes into an invalid partial batch.

Size limits and first entry policy​

The reader enforces maxRecords and maxBytes, but an indivisible first entry can itself exceed the limit. FirstEntryPolicy makes the behavior explicit:

  • strict mode returns READ_LIMIT_TOO_SMALL if the first complete entry cannot fit;
  • allow-first-overflow returns that one complete entry and stops.

The policy must be selected by the protocol adapter, not guessed by a provider reader.

Continuous committed reads​

COMMITTED results must be logically dense: each next range starts at the previous range's end. A gap or overlap is a metadata/provider invariant violation. TOPIC_COMPACTED may be sparse, but it must report coverage so the caller knows which logical range has been processed.

Source anchors​