Transaction Log - Communication Protocol Definition
Define the Protobuffer messages to be used in communication protocol between subscriber and publisher for the transaction log's reference implementations of those plugins.
At a minimum, the protocol must support the following communication requests:
From Subscriber to Publisher:
Simple PING/heartbeat
Ask what is last transaction ID applied in a given channel
Ask for all transaction messages applied after a given transaction ID
Ask for continuous checksum for a table/channel/
Blueprint information
- Status:
- Complete
- Approver:
- Jay Pipes
- Priority:
- Medium
- Drafter:
- Jay Pipes
- Direction:
- Approved
- Assignee:
- David Shrewsbury
- Definition:
- Superseded
- Series goal:
- None
- Implementation:
-
Deferred
- Milestone target:
- None
- Started by
- Completed by
- David Shrewsbury
Related branches
Related bugs
Sprints
Whiteboard
Got protocol messaging pretty much v1 done:
/**
* The communication protocol between a subscriber
* and a publisher
*/
message ReplicationComm
{
enum Command
{
REQUEST_PING = 1; /* ping/heartbeat */
RESPONSE_PING = 2;
REQUEST_
RESPONSE_
REQUEST_
RESPONSE_
}
message RequestChannelA
{
required uint32 channel_id = 1; /* the channel in question */
}
message ResponseChannel
{
required uint32 channel_id = 1; /* the channel in question */
required uint64 transaction_id = 2; /* the transaction ID last applied on the publisher */
}
message RequestTransaction
{
required uint32 channel_id = 1; /* the channel in question */
required uint64 transactions_
required uint32 max_number_
}
message ResponseTransac
{
required uint32 channel_id = 1; /* the channel in question */
required uint64 min_transaction_id = 2; /* first transaction ID of transaction messages to be sent */
required uint64 max_transaction_id = 3; /* last transaction ID of transaction messages to be sent */
required uint32 num_transactions = 4; /* total number of transactions to be sent */
}
required Command command = 1; /* the type of command in this packet */
optional RequestChannelA
optional ResponseChannel
optional RequestTransaction request_transaction = 4;
optional ResponseTransac
}
Work Items
Dependency tree

* Blueprints in grey have been implemented.