diff --git a/go/vt/vtgate/vstream_manager.go b/go/vt/vtgate/vstream_manager.go index 1d4b0dcd87c..9194327d076 100644 --- a/go/vt/vtgate/vstream_manager.go +++ b/go/vt/vtgate/vstream_manager.go @@ -733,7 +733,8 @@ func (vs *vstream) shouldRetry(err error) (bool, bool) { // If there is a GTIDSet Mismatch on the tablet, omit it from the candidate // list in the TabletPicker on retry. - if errCode == vtrpcpb.Code_INVALID_ARGUMENT && strings.Contains(err.Error(), "GTIDSet Mismatch") { + if (errCode == vtrpcpb.Code_INVALID_ARGUMENT && strings.Contains(err.Error(), "GTIDSet Mismatch")) || + errCode == vtrpc.Code_NOT_FOUND { return true, true } diff --git a/go/vt/vtgate/vstream_manager_test.go b/go/vt/vtgate/vstream_manager_test.go index 0a80ef6e3f5..dab397d4621 100644 --- a/go/vt/vtgate/vstream_manager_test.go +++ b/go/vt/vtgate/vstream_manager_test.go @@ -427,6 +427,13 @@ func TestVStreamRetriableErrors(t *testing.T) { shouldRetry: false, ignoreTablet: false, }, + { + name: "not found", + code: vtrpcpb.Code_NOT_FOUND, + msg: "", + shouldRetry: true, + ignoreTablet: true, + }, } commit := []*binlogdatapb.VEvent{