Skip to main content

Handling Transactions (Begin/Commit CDC Events)

For WAEvent originating from OLTP sources: if Filter Source Transaction Boundary is enabled at the source, the target will not receive any control events.

Distribution

  • When a single topic is used, all events, including Begin/Commit events, are sent to partition 0 if no partition key is specified.

  • If incoming events are distributed using metadata or user data keys, Begin/Commit events cannot be distributed if they do not have the configured keys --- they will be discarded.

  • Primary Key partitioning: Begin/Commit events do not have table-level or primary key information and will be discarded.

Schema Tracking

If the Avro Formatter is used, a separate schema for control events is created and registered under the subject name: <subject-name>_ControlRecord.

Message Structure for Begin/Commit Events

  • Header: custom header added if required metadata/userdata is present; otherwise empty.

  • Key (Custom): operation type or table name is set as the message key if present in user data or metadata.

  • Key (PrimaryKey): control events do not have table-level information, so the message key will be empty.

In formatAs: Table mode, control events are skipped.

Sample Messages

Begin event (raw WAEvent):

{
"pos": null,
"_id": null,
"timeStamp": 1753773949048,
"originTimeStamp": 1753773949048,
"key": null,
"data": ["waction", "BEGIN"],
"metadata": {
"BinlogFile": "ON.000039",
"TxnID": "1:000039:2533:1753773949000",
"OperationName": "BEGIN",
"TimeStamp": 1753773949000,
"BinlogPosition": 2533
}
}

Begin/Commit event --- FormatAs: Default:

{
"metadata": {
"BinlogFile": "ON.000039",
"TxnID": "1:000039:2897:1753774226000",
"OperationName": "BEGIN",
"TimeStamp": "2025-07-29T00:30:26.000-07:00",
"BinlogPosition": "2897"
},
"data": {"0": "waction", "1": "BEGIN"},
"before": null,
"userdata": null
}