Skip to content

Commit

Permalink
do not hold the lock after controller has started
Browse files Browse the repository at this point in the history
This enables controller to be able to create new watches after it has started.
This is required for cases where you are writing some meta-controller
which discovers new types to watch during the reconcilation.
  • Loading branch information
droot committed Oct 24, 2018
1 parent 1fe24e5 commit 80661ac
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion pkg/internal/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ func (c *Controller) Watch(src source.Source, evthdler handler.EventHandler, prc
// Start implements controller.Controller
func (c *Controller) Start(stop <-chan struct{}) error {
c.mu.Lock()
defer c.mu.Unlock()

// TODO(pwittrock): Reconsider HandleCrash
defer utilruntime.HandleCrash()
Expand All @@ -142,6 +141,7 @@ func (c *Controller) Start(stop <-chan struct{}) error {
// Leaving it here because that could happen in the future
err := fmt.Errorf("failed to wait for %s caches to sync", c.Name)
log.Error(err, "Could not wait for Cache to sync", "Controller", c.Name)
c.mu.Unlock()
return err
}

Expand All @@ -160,6 +160,7 @@ func (c *Controller) Start(stop <-chan struct{}) error {
}

c.Started = true
c.mu.Unlock()

<-stop
log.Info("Stopping workers", "Controller", c.Name)
Expand Down

0 comments on commit 80661ac

Please sign in to comment.