func()

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
}