From b91d5d49141b6146f4b419f4721b82dedfcc6747 Mon Sep 17 00:00:00 2001 From: Phani Raj Date: Wed, 3 Aug 2022 11:27:22 -0500 Subject: [PATCH] fix issue with only first table sync succeeding --- cmd/internal/sync.go | 8 ++++---- cmd/internal/sync_test.go | 20 ++++++++++++++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/cmd/internal/sync.go b/cmd/internal/sync.go index 6424fba..7c56016 100644 --- a/cmd/internal/sync.go +++ b/cmd/internal/sync.go @@ -91,16 +91,16 @@ func Sync(ctx context.Context, mysqlDatabase PlanetScaleEdgeMysqlAccess, edgeDat func generateEmptyState(source PlanetScaleSource, catalog Catalog, shards []string) *State { var s State - initialState, err := source.GetInitialState(source.Database, shards) - if err != nil { - return nil - } s = State{ Streams: map[string]ShardStates{}, } for _, stream := range catalog.Streams { + initialState, err := source.GetInitialState(source.Database, shards) + if err != nil { + return nil + } s.Streams[stream.Name] = initialState } diff --git a/cmd/internal/sync_test.go b/cmd/internal/sync_test.go index afd5bf0..36ce4b1 100644 --- a/cmd/internal/sync_test.go +++ b/cmd/internal/sync_test.go @@ -56,7 +56,9 @@ func TestSync_CanStartFromEmptyState(t *testing.T) { var cursor *psdbconnect.TableCursor ped := &testPlanetScaleEdgeDatabase{ ReadFn: func(ctx context.Context, ps PlanetScaleSource, s Stream, tc *psdbconnect.TableCursor) (*SerializedCursor, error) { + assert.Empty(t, tc.Position, "start position should be empty") cursor = tc + cursor.Position = "I-HAVE-MOVED" return TableCursorToSerializedCursor(tc) }, } @@ -72,8 +74,22 @@ func TestSync_CanStartFromEmptyState(t *testing.T) { Metadata: MetadataCollection{ { Metadata: NodeMetadata{ - Selected: true, - BreadCrumb: []string{}, + ReplicationMethod: "INCREMENTAL", + Selected: true, + BreadCrumb: []string{}, + }, + }, + }, + }, + { + Name: "customers", + TableName: "customers", + Metadata: MetadataCollection{ + { + Metadata: NodeMetadata{ + ReplicationMethod: "INCREMENTAL", + Selected: true, + BreadCrumb: []string{}, }, }, },