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) s.oplog.Subscribe(&callback)
defer s.oplog.Unsubscribe(&callback) defer s.oplog.Unsubscribe(&callback)
go func() {
for { 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:
}
}
}
}
}()
select { select {
case err := <-errChan: case err := <-errChan:
return err return err
case <-ctx.Done(): case <-ctx.Done():
return nil return nil
case event := <-events:
if err := resp.Send(event); err != nil {
return err
}
}
} }
} }