@@ -159,9 +159,9 @@ func (w *changeEventProcessor) processEvent(ctx context.Context, event statefulE
159
159
// NOTE: context.Canceled won't be treated as an error.
160
160
func (w * changeEventProcessor ) handleEventEntry (ctx context.Context , x * cdcpb.Event_Entries_ , state * regionFeedState ) error {
161
161
startTs := state .region .subscribedSpan .startTs
162
- emit := func (assembled regionFeedEvent ) error {
162
+ emit := func (val * common. RawKVEntry ) error {
163
163
// TODO: add a metric to indicate whether the event is sent successfully.
164
- e := newLogEvent (assembled , state .region .subscribedSpan )
164
+ e := newLogEvent (val , state .region .subscribedSpan )
165
165
return w .client .consume (ctx , e )
166
166
}
167
167
tableID := state .region .subscribedSpan .span .TableID
@@ -177,7 +177,7 @@ func (w *changeEventProcessor) doHandle(
177
177
x * cdcpb.Event_Entries_ ,
178
178
startTs uint64 ,
179
179
state * regionFeedState ,
180
- emit func (assembled regionFeedEvent ) error ,
180
+ emit func (val * common. RawKVEntry ) error ,
181
181
tableID common.TableID ,
182
182
) error {
183
183
regionID , _ , _ := state .getRegionMeta ()
@@ -269,30 +269,25 @@ func (w *changeEventProcessor) doHandle(
269
269
return nil
270
270
}
271
271
272
- func (w * changeEventProcessor ) assembleRowEvent (regionID uint64 , entry * cdcpb.Event_Row ) (regionFeedEvent , error ) {
272
+ func (w * changeEventProcessor ) assembleRowEvent (regionID uint64 , entry * cdcpb.Event_Row ) (* common. RawKVEntry , error ) {
273
273
var opType common.OpType
274
274
switch entry .GetOpType () {
275
275
case cdcpb .Event_Row_DELETE :
276
276
opType = common .OpTypeDelete
277
277
case cdcpb .Event_Row_PUT :
278
278
opType = common .OpTypePut
279
279
default :
280
- return regionFeedEvent {}, cerror .ErrUnknownKVEventType .GenWithStackByArgs (entry .GetOpType (), entry )
280
+ return & common. RawKVEntry {}, cerror .ErrUnknownKVEventType .GenWithStackByArgs (entry .GetOpType (), entry )
281
281
}
282
-
283
- return regionFeedEvent {
282
+ return & common.RawKVEntry {
283
+ OpType : opType ,
284
+ Key : entry .Key ,
285
+ Value : entry .GetValue (),
286
+ StartTs : entry .StartTs ,
287
+ CRTs : entry .CommitTs ,
284
288
RegionID : regionID ,
285
- Val : & common.RawKVEntry {
286
- OpType : opType ,
287
- Key : entry .Key ,
288
- Value : entry .GetValue (),
289
- StartTs : entry .StartTs ,
290
- CRTs : entry .CommitTs ,
291
- RegionID : regionID ,
292
- OldValue : entry .GetOldValue (),
293
- },
289
+ OldValue : entry .GetOldValue (),
294
290
}, nil
295
-
296
291
}
297
292
298
293
func (w * changeEventProcessor ) handleResolvedTs (ctx context.Context , batch resolvedTsBatch ) {
@@ -324,20 +319,16 @@ func (w *changeEventProcessor) advanceTableSpan(ctx context.Context, batch resol
324
319
state .updateResolvedTs (batch .ts )
325
320
}
326
321
327
- table := batch .regions [0 ].region .subscribedSpan
322
+ span := batch .regions [0 ].region .subscribedSpan
328
323
now := time .Now ().UnixMilli ()
329
- lastAdvance := table .lastAdvanceTime .Load ()
330
- if now - lastAdvance > int64 (w .client .config .AdvanceResolvedTsIntervalInMs ) && table .lastAdvanceTime .CompareAndSwap (lastAdvance , now ) {
331
- ts := table .rangeLock .ResolvedTs ()
332
- // TODO: only send ts when ts is larger than previous ts
333
- if ts > table .startTs {
334
- revent := regionFeedEvent {
335
- Val : & common.RawKVEntry {
336
- OpType : common .OpTypeResolved ,
337
- CRTs : ts ,
338
- },
339
- }
340
- e := newLogEvent (revent , table )
324
+ lastAdvance := span .lastAdvanceTime .Load ()
325
+ if now - lastAdvance > int64 (w .client .config .AdvanceResolvedTsIntervalInMs ) && span .lastAdvanceTime .CompareAndSwap (lastAdvance , now ) {
326
+ ts := span .rangeLock .ResolvedTs ()
327
+ if ts > span .startTs {
328
+ e := newLogEvent (& common.RawKVEntry {
329
+ OpType : common .OpTypeResolved ,
330
+ CRTs : ts ,
331
+ }, span )
341
332
if err := w .client .consume (ctx , e ); err != nil {
342
333
return
343
334
}
0 commit comments