]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/thrift/doc/specs/SequenceNumbers.md
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / jaegertracing / thrift / doc / specs / SequenceNumbers.md
1 # Sequence Number #
2
3 Apache Thrift built sequence numbers into every protocol exchange to allow
4 for clients that may submit multiple outstanding requests on a single transport
5 connection. This is typically done by asynchronous clients.
6
7 The following rules apply to sequence numbers:
8
9 1. A sequence number is a signed 32-bit integer. Negative values are allowed.
10 1. Sequence numbers `MUST` be unique across all outstanding requests on a
11 given transport connection. There is no requirement for unique numbers
12 between different transport connections even if they are from the same client.
13 1. A server `MUST` reply to a client with the same sequence number that was
14 used in the request. This includes any exception-based reply.
15 1. A client `MAY` use sequence numbers if it needs them for proper operation.
16 1. A client `SHOULD` set the sequence number to zero if it does not rely
17 on them.
18 1. Wrapped protocols (such as THeaderProtocol) `SHOULD` use the same sequence
19 number on the wrapping as is used on the payload protocol.
20
21 Servers will not inspect or make any logic choices based on the sequence number
22 sent by the client. The server's only job is to process the request and reply
23 with the same sequence number.