...
topVer
is topology version on node initiator before Incremental Snapshot starts.
On the picture below on left side is a diagram of sending transaction messages. Before sending message it checks whether cut is running with cutMarker()
. If it is then wrap message, otherwise send ordinary message (PrepareRequest
in example).
Ignite transaction protocol includes multiple messages. But only some of them affects meaningful (relating to the algorithm) that change state of transactions (PREPARED, COMMITTED):
...
Those messages are wrapped in ConsistentCutMarkerMessage
MarkerMessage
that is prepared right before sending message on other node. They used the current ConsistentCutMarker
for setting the marker.
Code Block | ||||
---|---|---|---|---|
| ||||
class ConsistentCutMarkerMessageMarkerMessage { Message msg; ConsistentCutMarker marker; } |
...
Those messages are wrapped in ConsistentCutMarkerFinishMessage
TransactionFinishMarkerMessage
that is prepared right before transaction starts committing on first committing node. They used the current ConsistentCutMarker
for setting the txMarker
. txMarker
can be null, if transaction starts committing before ConsistentCut starts.
Code Block | ||||
---|---|---|---|---|
| ||||
class ConsistentCutMarkerFinishMessageTransactionFinishMarkerMessage extends ConsistentCutMarkerMessageMarkerMessage { @Nullable ConsistentCutMarker txMarker; } |
...