diff --git a/go/vt/vtctl/localvtctldclient/bidi_stream.go b/go/vt/vtctl/localvtctldclient/bidi_stream.go index 6df8177374c..6b126b38acc 100644 --- a/go/vt/vtctl/localvtctldclient/bidi_stream.go +++ b/go/vt/vtctl/localvtctldclient/bidi_stream.go @@ -32,6 +32,13 @@ type bidiStream struct { sendClosed bool } +func newBidiStream(ctx context.Context) *bidiStream { + return &bidiStream{ + ctx: ctx, + errch: make(chan error, 1), + } +} + func (bs *bidiStream) close(err error) { if err == nil { err = io.EOF diff --git a/go/vt/vtctl/vtctldclient/codegen/template.go b/go/vt/vtctl/vtctldclient/codegen/template.go index 26cd43d87b7..2bdb5b9ba9f 100644 --- a/go/vt/vtctl/vtctldclient/codegen/template.go +++ b/go/vt/vtctl/vtctldclient/codegen/template.go @@ -99,10 +99,8 @@ func (client *{{ $.Type }}) {{ .Name }}(ctx context.Context, {{ .Param.Name }} { {{- else -}} {{- if .IsStreaming -}} stream := &{{ streamAdapterName .Name }}{ - bidiStream: &bidiStream{ - ctx: ctx, - }, - ch: make(chan {{ .StreamMessage.Type }}), + bidiStream: newBidiStream(ctx), + ch: make(chan {{ .StreamMessage.Type }}, 1), } go func() { err := client.s.{{ .Name }}(in, stream)