fix: possible race condition leading to rare panic in GetOperationEvents

This commit is contained in:
garethgeorge
2024-07-14 20:47:50 -07:00
parent d93068a746
commit f250adf4a0

View File

@@ -229,27 +229,17 @@ func (s *BackrestHandler) GetOperationEvents(ctx context.Context, req *connect.R
s.oplog.Subscribe(&callback)
defer s.oplog.Unsubscribe(&callback)
go func() {
for {
select {
case <-ctx.Done():
return
case event := <-events:
if err := resp.Send(event); err != nil {
select {
case errChan <- errors.New("failed to send event"):
default:
}
}
for {
select {
case err := <-errChan:
return err
case <-ctx.Done():
return nil
case event := <-events:
if err := resp.Send(event); err != nil {
return err
}
}
}()
select {
case err := <-errChan:
return err
case <-ctx.Done():
return nil
}
}