View Source KlifeProtocol.Messages.ListOffsets (Klife Protocol v0.5.0)

Kafka protocol ListOffsets message

Request versions summary:

  • Version 1 removes MaxNumOffsets. From this version forward, only a single offset can be returned.
  • Version 2 adds the isolation level, which is used for transactional reads.
  • Version 3 is the same as version 2.
  • Version 4 adds the current leader epoch, which is used for fencing.
  • Version 5 is the same as version 4.
  • Version 6 enables flexible versions.
  • Version 7 enables listing offsets by max timestamp (KIP-734).
  • Version 8 enables listing offsets by local log start offset (KIP-405).

Response versions summary:

  • Version 1 removes the offsets array in favor of returning a single offset. Version 1 also adds the timestamp associated with the returned offset.
  • Version 2 adds the throttle time.
  • Starting in version 3, on quota violation, brokers send out responses before throttling.
  • Version 4 adds the leader epoch, which is used for fencing.
  • Version 5 adds a new error code, OFFSET_NOT_AVAILABLE.
  • Version 6 enables flexible versions.
  • Version 7 is the same as version 6 (KIP-734).
  • Version 8 enables listing offsets by local log start offset. This is the earliest log start offset in the local log. (KIP-405).

Link to this section Summary

Functions

Returns the message api key number.

Receive a binary in the kafka wire format and deserialize it into a map.

Returns the current max supported version of this message.

Returns the current min supported version of this message.

Receives a map and serialize it to kafka wire format of the given version.

Link to this section Functions

Returns the message api key number.

Link to this function

deserialize_response(data, version, with_header? \\ true)

View Source

Receive a binary in the kafka wire format and deserialize it into a map.

Response content fields:

  • throttle_time_ms: The duration in milliseconds for which the request was throttled due to a quota violation, or zero if the request did not violate any quota. (int32 | versions 2+)

  • topics: Each topic in the response. ([]ListOffsetsTopicResponse | versions 0+)

    • name: The topic name (string | versions 0+)

    • partitions: Each partition in the response. ([]ListOffsetsPartitionResponse | versions 0+)

      • partition_index: The partition index. (int32 | versions 0+)

      • error_code: The partition error code, or 0 if there was no error. (int16 | versions 0+)

      • old_style_offsets: The result offsets. ([]int64 | versions 0)

      • timestamp: The timestamp associated with the returned offset. (int64 | versions 1+)

      • offset: The returned offset. (int64 | versions 1+)

      • leader_epoch: (int32 | versions 4+)

Returns the current max supported version of this message.

Returns the current min supported version of this message.

Link to this function

serialize_request(map, version)

View Source

Receives a map and serialize it to kafka wire format of the given version.

Input content fields:

  • replica_id: The broker ID of the requester, or -1 if this request is being made by a normal consumer. (int32 | versions 0+)

  • isolation_level: This setting controls the visibility of transactional records. Using READ_UNCOMMITTED (isolation_level = 0) makes all records visible. With READ_COMMITTED (isolation_level = 1), non-transactional and COMMITTED transactional records are visible. To be more concrete, READ_COMMITTED returns all data from offsets smaller than the current LSO (last stable offset), and enables the inclusion of the list of aborted transactions in the result, which allows consumers to discard ABORTED transactional records (int8 | versions 2+)

  • topics: Each topic in the request. ([]ListOffsetsTopic | versions 0+)

    • name: The topic name. (string | versions 0+)

    • partitions: Each partition in the request. ([]ListOffsetsPartition | versions 0+)

      • partition_index: The partition index. (int32 | versions 0+)

      • current_leader_epoch: The current leader epoch. (int32 | versions 4+)

      • timestamp: The current timestamp. (int64 | versions 0+)

      • max_num_offsets: The maximum number of offsets to report. (int32 | versions 0)