Skip to content

Commit 57d0a81

Browse files
committed
deploy: pin retries to a const and forget correctly in the dc loop
1 parent d85642e commit 57d0a81

File tree

4 files changed

+34
-12
lines changed

4 files changed

+34
-12
lines changed

pkg/deploy/controller/deploymentconfig/controller.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -367,18 +367,22 @@ func (c *DeploymentConfigController) calculateStatus(config deployapi.Deployment
367367

368368
func (c *DeploymentConfigController) handleErr(err error, key interface{}) {
369369
if err == nil {
370+
c.queue.Forget(key)
370371
return
371372
}
373+
372374
if _, isFatal := err.(fatalError); isFatal {
373375
utilruntime.HandleError(err)
374376
c.queue.Forget(key)
375377
return
376378
}
377379

378-
if c.queue.NumRequeues(key) < 10 {
380+
if c.queue.NumRequeues(key) < MaxRetries {
381+
glog.V(2).Infof("Error syncing deployment config %v: %v", key, err)
379382
c.queue.AddRateLimited(key)
380-
} else {
381-
glog.V(2).Infof(err.Error())
382-
c.queue.Forget(key)
383+
return
383384
}
385+
386+
utilruntime.HandleError(err)
387+
c.queue.Forget(key)
384388
}

pkg/deploy/controller/deploymentconfig/factory.go

+3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ const (
2525
// controller stores have synced. If it hasn't synced, to avoid a hot loop, we'll wait this long
2626
// between checks.
2727
StoreSyncedPollPeriod = 100 * time.Millisecond
28+
// MaxRetries is the number of times a deployment config will be retried before it is dropped out
29+
// of the queue.
30+
MaxRetries = 5
2831
)
2932

3033
// NewDeploymentConfigController creates a new DeploymentConfigController.

pkg/deploy/controller/generictrigger/controller.go

+18
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import (
66
kapi "k8s.io/kubernetes/pkg/api"
77
kclient "k8s.io/kubernetes/pkg/client/unversioned"
88
"k8s.io/kubernetes/pkg/runtime"
9+
utilruntime "k8s.io/kubernetes/pkg/util/runtime"
910
"k8s.io/kubernetes/pkg/util/workqueue"
1011

12+
"github.com/golang/glog"
1113
osclient "github.com/openshift/origin/pkg/client"
1214
oscache "github.com/openshift/origin/pkg/client/cache"
1315
deployapi "github.com/openshift/origin/pkg/deploy/api"
@@ -213,3 +215,19 @@ func (c *DeploymentTriggerController) update(config *deployapi.DeploymentConfig,
213215
_, err := c.dn.DeploymentConfigs(config.Namespace).UpdateStatus(config)
214216
return err
215217
}
218+
219+
func (c *DeploymentTriggerController) handleErr(err error, key interface{}) {
220+
if err == nil {
221+
c.queue.Forget(key)
222+
return
223+
}
224+
225+
if c.queue.NumRequeues(key) < MaxRetries {
226+
glog.V(2).Infof("Error instantiating deployment config %v: %v", key, err)
227+
c.queue.AddRateLimited(key)
228+
return
229+
}
230+
231+
utilruntime.HandleError(err)
232+
c.queue.Forget(key)
233+
}

pkg/deploy/controller/generictrigger/factory.go

+5-8
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ const (
2323
// stream stores have synced. If it hasn't synced, to avoid a hot loop, we'll wait this long
2424
// between checks.
2525
StoreSyncedPollPeriod = 100 * time.Millisecond
26+
// MaxRetries is the number of times a deployment config will be retried before it is dropped
27+
// out of the queue.
28+
MaxRetries = 5
2629
)
2730

2831
// NewDeploymentTriggerController returns a new DeploymentTriggerController.
@@ -160,15 +163,9 @@ func (c *DeploymentTriggerController) work() bool {
160163
return false
161164
}
162165

163-
if err := c.Handle(dc); err != nil {
164-
utilruntime.HandleError(err)
166+
err = c.Handle(dc)
167+
c.handleErr(err, key)
165168

166-
if c.queue.NumRequeues(key) < 2 {
167-
c.queue.AddRateLimited(key)
168-
return false
169-
}
170-
}
171-
c.queue.Forget(key)
172169
return false
173170
}
174171

0 commit comments

Comments
 (0)