What did you do?
Receive BatchDMLEvent instances from a remote event service. The event
collector pushes each deserialized event into dynamic stream before calling
AssembleRows.
What did you expect to see?
BatchDMLEvent.GetSize should include the encoded row payload so dynamic
stream memory control and byte-based batching reflect the actual event size.
What did you see instead?
Deserialization stores the encoded rows in RawRows and leaves Rows nil.
However, GetSize only calls Rows.MemoryUsage, which returns zero in this
state.
As a result, dynamic stream undercounts pending memory for remote DML batches,
and byte-based batching may continue until the event-count hard limit instead
of stopping near the configured byte limit.
This is related to #3237, which introduced byte-based dynamic stream batching.
Versions of the cluster
Upstream TiDB cluster version:
Upstream TiKV version:
TiCDC version:
master at 32152380dfa06d646cfdc54ad1bab2c32921de5d
What did you do?
Receive
BatchDMLEventinstances from a remote event service. The eventcollector pushes each deserialized event into dynamic stream before calling
AssembleRows.What did you expect to see?
BatchDMLEvent.GetSizeshould include the encoded row payload so dynamicstream memory control and byte-based batching reflect the actual event size.
What did you see instead?
Deserialization stores the encoded rows in
RawRowsand leavesRowsnil.However,
GetSizeonly callsRows.MemoryUsage, which returns zero in thisstate.
As a result, dynamic stream undercounts pending memory for remote DML batches,
and byte-based batching may continue until the event-count hard limit instead
of stopping near the configured byte limit.
This is related to #3237, which introduced byte-based dynamic stream batching.
Versions of the cluster
Upstream TiDB cluster version:
Not applicableUpstream TiKV version:
Not applicableTiCDC version:
master at 32152380dfa06d646cfdc54ad1bab2c32921de5d