...
ID | IEP-[NUMBER] |
Author | Alexander |
Sponsor |
|
Created | |
Status | DRAFT |
Motivation
Tracing provides information useful for debugging that both helps with regular, daily-basic system monitoring and with incidents analysis. Within the scope of Apache Ignite almost every process or sub-system could be traced including:
...
1 byte: special flags;
- First byte of the serializedSpan is reserved for special flags
1 bytes: spi type;
- In order to match whether span was serialized with the spi that is used on the node that is going to deserialize it.
2 bytes: major protocol version;
- Spans are considered as incompatible in case of different major protocol versions;
2 bytes: minor protocol version;
- Should be incremented in case of adding new fields, etc. Within the scope of the same major protocol version and different minor protocol versions spans are considered to be compatible.
4 bytes: spi specific serialized span length;
n bytes: spi specific serialized span body;
4 bytes: span type
4 bytes included scopes size;
2 * included scopes size: included scopes items one by one;
Trace Tree Example
Bellow there's an example of trace generated by pessimistic serializable transaction.
Image Added
Risks and Assumptions
- Performance drop. So careful benchmarking is requires and probably lots of optimizations.
- Spans inconsistencies during rolling upgrade if nodes have different versions of TracingManagers or Tracing Service Provider Interfaces. Span Serialization protocol must take this into account.
...