...
lastFinishedCutId
holds previous ConsistentCutId
, or null.DistributedProcess
with special message holds new ConsistentCutId
(goal is to notify every node in a cluster about running incremental snapshot). ConsistentCutId
by discovery.ConsistentCutId
by transaction message (Prepare, Finish)ConsistentCutId
, every node: ConsistentCut
future.committingTx
(goal is to track COMMITTING transactions, that aren't part of IgniteTxManager#activeTx
)ConsistentCutId
.IgniteTxManager#activeTx.
Set listeners on those tx#finishFuture.
ConsistentCutStartRecord
to WAL with the received ConsistentCutId
.committingTxs.
Set listeners on those tx#finishFuture.
committingTxs
to null.
DistributedProcess
is running every node is signing output transaction messages:ConsistentCutId
(to trigger ConsistentCut
on remote node, if not yet).txCutId
on the node that commits first (see below in Signing messages, if it's not null then transaction starts committing After
Consistent Cut):committingTxs
, and marks the transaction with extracted from the message txCutId.
check If transaction state is UNKNOWN or status is RECOVERY_FINISH, then complete ConsistentCut with exception.
txCutId
equals to local, then transaction put into after
, otherwise it's put into before
.ConsistentCutFinishRecord
into WAL with the collections ( before
, after
). ConsistentCut
future.ConsistentCut,
on every node:lastFinishedCutId
with the current.
ConsistentCut
future becomes null....
Those messages are wrapped in ConsistentCutAwareTxFinishMessage
that is prepared right before transaction starts committing on first committing node. They used the current ConsistentCutId
for this setting. txCutId
can be If current ConsistentCutId
is not null, if then transaction starts committing before ConsistentCut starts.after ConsistentCut started and it means that this transaction belongs the After
side.
Code Block | ||||
---|---|---|---|---|
| ||||
class ConsistentCutAwareTransactionFinishMessage extends ConsistentCutAwareMessage { @Nullable UUID txCutId; } |
...