diff --git a/lib/go/thrift/simple_server.go b/lib/go/thrift/simple_server.go index d4f555ccd51..3f46cd68bda 100644 --- a/lib/go/thrift/simple_server.go +++ b/lib/go/thrift/simple_server.go @@ -24,7 +24,6 @@ import ( "errors" "fmt" "io" - "net" "sync" "sync/atomic" "time" @@ -195,12 +194,14 @@ func (p *TSimpleServer) innerAccept() (int32, error) { return 0, err } if client != nil { + ctx, cancel := context.WithCancel(context.Background()) p.wg.Add(2) go func() { defer p.wg.Done() defer cancel() + defer client.Close() if err := p.processRequests(client); err != nil { p.logger(fmt.Sprintf("error processing request: %v", err)) } @@ -355,13 +356,7 @@ func (p *TSimpleServer) processRequests(client TTransport) (err error) { ok, err := processor.Process(ctx, inputProtocol, outputProtocol) if errors.Is(err, ErrAbandonRequest) { - err := client.Close() - if errors.Is(err, net.ErrClosed) { - // In this case, it's kinda expected to get - // net.ErrClosed, treat that as no-error - return nil - } - return err + return nil } if errors.As(err, new(TTransportException)) && err != nil { return err