Skip to content

SourcesAvroV2

Joseph Glanville edited this page Feb 11, 2019 · 1 revision

Header Contents

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Length                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Version                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Control                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                               ID                              +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                            ShardBy                            +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   #KV Pairs   |   Key Length  |    Key (up to 255 bytes)      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Value Length         |   Value (up to 65535 bytes)   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Avro N Bytes                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The fields of the payload have the following semantic meaning:

  • Length - Length of full packet
  • Version - Version of the wire protocol used. In this case, 2.
  • Control - Metadata governing on the payload is to be published. Version 1 & 2 of the protocol only support a bit indicating whether or not the client expects an ack after publication.
  • ID - Explained in kwargs.
  • ShardBy - Explained in kwargs.
  • #KV Pairs - Number of KV pairs (max 255)
  • Key Length - Length of Key in bytes (max 255)
  • Key - N Bytes of Key data encoded as UTF-8 (max 255 bytes after encoding)
  • Value Length - Length of Value data (max 65535)
  • Value - N Bytes of Value data, no encoding enforced (max 65535 bytes)

Control Flags

  • SYNC :: 0x00000001 - when specified the avro source will ACK publication into Cernan's internal queues by sending the payload's corresponding id back to the client.