24 lines
1.2 KiB
Markdown
24 lines
1.2 KiB
Markdown
# Sequence Number #
|
|
|
|
Apache Thrift built sequence numbers into every protocol exchange to allow
|
|
for clients that may submit multiple outstanding requests on a single transport
|
|
connection. This is typically done by asynchronous clients.
|
|
|
|
The following rules apply to sequence numbers:
|
|
|
|
1. A sequence number is a signed 32-bit integer. Negative values are allowed.
|
|
1. Sequence numbers `MUST` be unique across all outstanding requests on a
|
|
given transport connection. There is no requirement for unique numbers
|
|
between different transport connections even if they are from the same client.
|
|
1. A server `MUST` reply to a client with the same sequence number that was
|
|
used in the request. This includes any exception-based reply.
|
|
1. A client `MAY` use sequence numbers if it needs them for proper operation.
|
|
1. A client `SHOULD` set the sequence number to zero if it does not rely
|
|
on them.
|
|
1. Wrapped protocols (such as THeaderProtocol) `SHOULD` use the same sequence
|
|
number on the wrapping as is used on the payload protocol.
|
|
|
|
Servers will not inspect or make any logic choices based on the sequence number
|
|
sent by the client. The server's only job is to process the request and reply
|
|
with the same sequence number.
|