# |
Message |
Description |
Workflow |
Nodes |
0 |
Error |
Error is a special type of message, because this can be sent against any other message, even if such a message does not expect a reply usually. |
|
* → * |
1 |
RequestIdentification |
Request a node identification. This must be the first packet for any connection. |
|
* ⇄ * |
2 |
Ping |
Empty request used as network barrier. |
|
* ⇄ * |
3 |
CloseClient |
Tell peer that it can close the connection if it has finished with us. |
|
* → * |
4 |
AskPrimary |
Ask node identier of the current primary master. |
|
ctl ⇄ A |
5 |
NotPrimaryMaster |
Notify peer that I'm not the primary master. Attach any extra information to help the peer joining the cluster. |
|
SM → * |
6 |
NotifyNodeInformation |
Notify information about one or more nodes. |
|
M → * |
7 |
AskRecovery |
Ask storage nodes data needed by master to recover. Reused by `neoctl print ids`. |
|
M ⇄ S
ctl ⇄ A ⇄ M |
8 |
AskLastIDs |
Ask the last OID/TID so that a master can initialize its TransactionManager. Reused by `neoctl print ids`. |
|
M ⇄ S
ctl ⇄ A ⇄ M |
9 |
AskPartitionTable |
Ask storage node the remaining data needed by master to recover. |
|
M ⇄ S |
10 |
SendPartitionTable |
Send the full partition table to admin/client/storage nodes on connection. |
|
M → A, C, S |
11 |
NotifyPartitionChanges |
Notify about changes in the partition table. |
|
M → * |
12 |
StartOperation |
Tell a storage node to start operation. Before this message, it must only communicate with the primary master. |
|
M → S |
13 |
StopOperation |
Notify that the cluster is not operational anymore. Any operation between nodes must be aborted. |
|
M → S, C |
14 |
AskUnfinishedTransactions |
Ask unfinished transactions, which will be replicated when they're finished. |
|
S ⇄ M |
15 |
AskLockedTransactions |
Ask locked transactions to replay committed transactions that haven't been unlocked. |
|
M ⇄ S |
16 |
AskFinalTID |
Return final tid if ttid has been committed, to recover from certain failures during tpc_finish. |
|
M ⇄ S
C ⇄ M, S |
17 |
ValidateTransaction |
Do replay a committed transaction that was not unlocked. |
|
M → S |
18 |
AskBeginTransaction |
Ask to begin a new transaction. This maps to `tpc_begin`. |
|
C ⇄ M |
19 |
FailedVote |
Report storage nodes for which vote failed. True is returned if it's still possible to finish the transaction. |
|
C ⇄ M |
20 |
AskFinishTransaction |
Finish a transaction. Return the TID of the committed transaction. This maps to `tpc_finish`. |
|
C ⇄ M |
21 |
AskLockInformation |
Commit a transaction. The new data is read-locked. |
|
M ⇄ S |
22 |
InvalidateObjects |
Notify about a new transaction modifying objects, invalidating client caches. |
|
M → C |
23 |
NotifyUnlockInformation |
Notify about a successfully committed transaction. The new data can be unlocked. |
|
M → S |
24 |
AskNewOIDs |
Ask new OIDs to create objects. |
|
C ⇄ M |
25 |
NotifyDeadlock |
Ask master to generate a new TTID that will be used by the client to solve a deadlock by rebasing the transaction on top of concurrent changes. |
|
S → M → C |
26 |
AskRebaseTransaction |
Rebase a transaction to solve a deadlock. |
|
C ⇄ S |
27 |
AskRebaseObject |
Rebase an object change to solve a deadlock. |
|
C ⇄ S |
28 |
AskStoreObject |
Ask to create/modify an object. This maps to `store`. |
|
C ⇄ S |
29 |
AbortTransaction |
Abort a transaction. This maps to `tpc_abort`. |
|
C → S
C → M → S |
30 |
AskStoreTransaction |
Ask to store a transaction. Implies vote. |
|
C ⇄ S |
31 |
AskVoteTransaction |
Ask to vote a transaction. |
|
C ⇄ S |
32 |
AskObject |
Ask a stored object by its OID, optionally at/before a specific tid. This maps to `load/loadBefore/loadSerial`. |
|
C ⇄ S |
33 |
AskTIDs |
Ask for TIDs between a range of offsets. The order of TIDs is descending, and the range is [first, last). This maps to `undoLog`. |
|
C ⇄ S |
34 |
AskTransactionInformation |
Ask for transaction metadata. |
|
C ⇄ S |
35 |
AskObjectHistory |
Ask history information for a given object. The order of serials is descending, and the range is [first, last]. This maps to `history`. |
|
C ⇄ S |
36 |
AskPartitionList |
Ask information about partitions. |
|
ctl ⇄ A |
37 |
AskNodeList |
Ask information about nodes. |
|
ctl ⇄ A |
38 |
SetNodeState |
Change the state of a node. |
|
ctl ⇄ A ⇄ M |
39 |
AddPendingNodes |
Mark given pending nodes as running, for future inclusion when tweaking the partition table. |
|
ctl ⇄ A ⇄ M |
40 |
TweakPartitionTable |
Ask the master to balance the partition table, optionally excluding specific nodes in anticipation of removing them. |
|
ctl ⇄ A ⇄ M |
41 |
SetNumReplicas |
Set the number of replicas. |
|
ctl ⇄ A ⇄ M |
42 |
SetClusterState |
Set the cluster state. |
|
ctl ⇄ A ⇄ M |
43 |
Repair |
Ask storage nodes to repair their databases. |
|
ctl ⇄ A ⇄ M |
44 |
NotifyRepair |
Repair is translated to this message, asking a specific storage node to repair its database. |
|
M → S |
45 |
NotifyClusterInformation |
Notify about a cluster state change. |
|
M → * |
46 |
AskClusterState |
Ask the state of the cluster |
|
ctl ⇄ A
A ⇄ M |
47 |
AskObjectUndoSerial |
Ask storage the serial where object data is when undoing given transaction, for a list of OIDs. |
|
C ⇄ S |
48 |
AskTIDsFrom |
Ask for length TIDs starting at min_tid. The order of TIDs is ascending. Used by `iterator`. |
|
C ⇄ S |
49 |
AskPack |
Request a pack at given TID. |
|
C ⇄ M ⇄ S |
50 |
CheckReplicas |
Ask the cluster to search for mismatches between replicas, metadata only, and optionally within a specific range. Reference nodes can be specified. |
|
ctl ⇄ A ⇄ M |
51 |
CheckPartition |
Ask a storage node to compare a partition with all other nodes. Like for CheckReplicas, only metadata are checked, optionally within a specific range. A reference node can be specified. |
|
M → S |
52 |
AskCheckTIDRange |
Ask some stats about a range of transactions. Used to know if there are differences between a replicating node and reference node. |
|
S ⇄ S |
53 |
AskCheckSerialRange |
Ask some stats about a range of object history. Used to know if there are differences between a replicating node and reference node. |
|
S ⇄ S |
54 |
NotifyPartitionCorrupted |
Notify that mismatches were found while check replicas for a partition. |
|
S → M |
55 |
NotifyReady |
Notify that we're ready to serve requests. |
|
S → M |
56 |
AskLastTransaction |
Ask last committed TID. |
|
C ⇄ M
ctl ⇄ A ⇄ M |
57 |
AskCheckCurrentSerial |
Check if given serial is current for the given oid, and lock it so that this state is not altered until transaction ends. This maps to `checkCurrentSerialInTransaction`. |
|
C ⇄ S |
58 |
NotifyTransactionFinished |
Notify that a transaction blocking a replication is now finished. |
|
M → S |
59 |
Replicate |
Notify a storage node to replicate partitions up to given 'tid' and from given sources. |
|
M → S |
60 |
NotifyReplicationDone |
Notify the master node that a partition has been successfully replicated from a storage to another. |
|
S → M |
61 |
AskFetchTransactions |
Ask a storage node to send all transaction data we don't have, and reply with the list of transactions we should not have. |
|
S ⇄ S |
62 |
AskFetchObjects |
Ask a storage node to send object records we don't have, and reply with the list of records we should not have. |
|
S ⇄ S |
63 |
AddTransaction |
Send metadata of a transaction to a node that does not have them. |
|
S → S |
64 |
AddObject |
Send an object record to a node that does not have it. |
|
S → S |
65 |
Truncate |
Request DB to be truncated. Also used to leave backup mode. |
|
ctl ⇄ A ⇄ M
M ⇄ S |
66 |
FlushLog |
Request all nodes to flush their logs. |
|
ctl → A → M → * |
67 |
AskMonitorInformation |
|
|
ctl ⇄ A |
68 |
NotifyMonitorInformation |
|
|
A → A |
69 |
NotifyUpstreamAdmin |
|
|
M → A |