enforce to close accepted connection after processing
Client: go
Patch: Jun.S.Shen <jun.s.shen@oracle.com
This closes #2883
diff --git a/lib/go/thrift/simple_server.go b/lib/go/thrift/simple_server.go
index a8634fc..a7d15f9 100644
--- a/lib/go/thrift/simple_server.go
+++ b/lib/go/thrift/simple_server.go
@@ -205,12 +205,14 @@
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 {
ctx := p.logContext.Load()
slog.ErrorContext(*ctx, "error processing request", "err", err)
@@ -366,13 +368,7 @@
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