Skip to content

Commit b48900b

Browse files
[utils] Don't lock grpc streams
Only grpc calls required to be locked, streams are wrapped by the corresponding clients Signed-off-by: Mykola Kobets <mykola_kobets@epam.com>
1 parent 6d46cdf commit b48900b

File tree

1 file changed

+1
-24
lines changed

1 file changed

+1
-24
lines changed

utils/grpchelpers/grpcconn.go

+1-24
Original file line numberDiff line numberDiff line change
@@ -125,31 +125,8 @@ func (conn *GRPCConn) Invoke(ctx context.Context, method string, args any, reply
125125
}
126126
}
127127

128-
// NewStream begins a streaming RPC.
129128
func (conn *GRPCConn) NewStream(ctx context.Context, desc *grpc.StreamDesc, method string,
130129
opts ...grpc.CallOption,
131130
) (grpc.ClientStream, error) {
132-
lock := make(chan struct{}, 1)
133-
134-
go func() {
135-
conn.connStarted.Wait()
136-
lock <- struct{}{}
137-
}()
138-
139-
select {
140-
case <-lock:
141-
conn.Lock()
142-
defer conn.Unlock()
143-
144-
if conn.grpcConn == nil {
145-
return nil, aoserrors.New("grpc connection closed")
146-
}
147-
148-
stream, err := conn.grpcConn.NewStream(ctx, desc, method, opts...)
149-
150-
return stream, aoserrors.Wrap(err)
151-
152-
case <-ctx.Done():
153-
return nil, aoserrors.New("grpc context closed")
154-
}
131+
return conn.grpcConn.NewStream(ctx, desc, method, opts...)
155132
}

0 commit comments

Comments
 (0)