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 {
select { case err := <-errChan:
case <-ctx.Done(): return err
return case <-ctx.Done():
case event := <-events: return nil
if err := resp.Send(event); err != nil { case event := <-events:
select { if err := resp.Send(event); err != nil {
case errChan <- errors.New("failed to send event"): return err
default:
}
}
} }
} }
}()
select {
case err := <-errChan:
return err
case <-ctx.Done():
return nil
} }
} }