in readers/apiserver/watchlist/watchlist.go [216:242]
func (r *Reader) clientSwitch(ctx context.Context, rec exponential.Record) error {
select {
case <-r.closeCh:
return nil
default:
}
r.mu.Lock()
defer r.mu.Unlock()
newReader, err := r.newReader()
if err != nil {
return err
}
if err := newReader.SetOut(context.Background(), r.ch); err != nil {
return fmt.Errorf("bug: could not call SetOut() on new watchlist reader: %w", err)
}
if err := newReader.Run(context.Background()); err != nil {
return err
}
if err := r.r.Close(context.Background()); err != nil {
r.logger.Warn(fmt.Sprintf("could not close old watchlist reader: %v", err))
}
r.r = newReader
return nil
}