()
| 186 | } |
| 187 | |
| 188 | func (c *Controller) processNextItem() bool { |
| 189 | key, quit := c.queue.Get() |
| 190 | if quit { |
| 191 | return false |
| 192 | } |
| 193 | defer c.queue.Done(key) |
| 194 | |
| 195 | // main reconcile logic |
| 196 | requeueAfter, err := c.syncHandler(context.TODO(), key.(string)) |
| 197 | switch { |
| 198 | case err != nil: |
| 199 | utilruntime.HandleError(fmt.Errorf("sync %q failed with %v", key, err)) |
| 200 | c.queue.AddRateLimited(key) |
| 201 | case requeueAfter != nil: |
| 202 | c.queue.Forget(key) |
| 203 | c.queue.AddAfter(key, *requeueAfter) |
| 204 | } |
| 205 | |
| 206 | return true |
| 207 | } |
| 208 | |
| 209 | func (c *Controller) worker(stopCh <-chan struct{}) { |
| 210 | for c.processNextItem() { |
no test coverage detected