Compare commits

..

1 commit

Author SHA1 Message Date
3ed8039f60
[] rpc: Fix mem leak again
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-30 10:58:47 +03:00

View file

@ -2,7 +2,6 @@ package client
import ( import (
"context" "context"
"sync"
"time" "time"
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/api/rpc/message" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/api/rpc/message"
@ -11,12 +10,11 @@ import (
type streamWrapper struct { type streamWrapper struct {
grpc.ClientStream grpc.ClientStream
timeout time.Duration timeout time.Duration
cancel context.CancelFunc cancel context.CancelFunc
closeSendOnce sync.Once
} }
func (w *streamWrapper) ReadMessage(m message.Message) error { func (w streamWrapper) ReadMessage(m message.Message) error {
// Can be optimized: we can create blank message here. // Can be optimized: we can create blank message here.
gm := m.ToGRPCMessage() gm := m.ToGRPCMessage()
@ -30,20 +28,14 @@ func (w *streamWrapper) ReadMessage(m message.Message) error {
return m.FromGRPCMessage(gm) return m.FromGRPCMessage(gm)
} }
func (w *streamWrapper) WriteMessage(m message.Message) error { func (w streamWrapper) WriteMessage(m message.Message) error {
return w.withTimeout(func() error { return w.withTimeout(func() error {
return w.ClientStream.SendMsg(m.ToGRPCMessage()) return w.ClientStream.SendMsg(m.ToGRPCMessage())
}) })
} }
func (w *streamWrapper) closeSend() error { func (w *streamWrapper) closeSend() error {
var err error return w.withTimeout(w.ClientStream.CloseSend)
w.closeSendOnce.Do(
func() {
err = w.withTimeout(w.ClientStream.CloseSend)
},
)
return err
} }
func (w *streamWrapper) Close() error { func (w *streamWrapper) Close() error {