Skip to content

Commit fbb2f2f

Browse files
apokalyptiksiddontang
authored andcommitted
Handle when missing table map at log start (go-mysql-org#134)
1 parent af2878f commit fbb2f2f

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

replication/parser.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,10 @@ func (p *BinlogParser) ParseReader(r io.Reader, onEvent OnEventFunc) error {
100100
var e Event
101101
e, err = p.parseEvent(h, data)
102102
if err != nil {
103-
break
103+
if _, ok := err.(errMissingTableMapEvent); ok {
104+
continue
105+
}
106+
return errors.Trace(err)
104107
}
105108

106109
if err = onEvent(&BinlogEvent{rawData, h, e}); err != nil {

replication/row_event.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import (
1515
"github.com/siddontang/go/hack"
1616
)
1717

18+
type errMissingTableMapEvent error
19+
1820
type TableMapEvent struct {
1921
tableIDSize int
2022

@@ -259,7 +261,11 @@ func (e *RowsEvent) Decode(data []byte) error {
259261
var ok bool
260262
e.Table, ok = e.tables[e.TableID]
261263
if !ok {
262-
return errors.Errorf("invalid table id %d, no correspond table map event", e.TableID)
264+
if len(e.tables) > 0 {
265+
return errors.Errorf("invalid table id %d, no corresponding table map event", e.TableID)
266+
} else {
267+
return errMissingTableMapEvent(errors.Errorf("invalid table id %d, no corresponding table map event", e.TableID))
268+
}
263269
}
264270

265271
var err error

0 commit comments

Comments
 (0)