controller: work around milliseconds skew in AddAfter
This commit is contained in:
		| @@ -346,7 +346,9 @@ func (dsc *DaemonSetsController) updatePod(old, cur interface{}) { | |||||||
| 		dsc.enqueueDaemonSet(ds) | 		dsc.enqueueDaemonSet(ds) | ||||||
| 		// See https://github.com/kubernetes/kubernetes/pull/38076 for more details | 		// See https://github.com/kubernetes/kubernetes/pull/38076 for more details | ||||||
| 		if changedToReady && ds.Spec.MinReadySeconds > 0 { | 		if changedToReady && ds.Spec.MinReadySeconds > 0 { | ||||||
| 			dsc.enqueueDaemonSetAfter(ds, time.Duration(ds.Spec.MinReadySeconds)*time.Second) | 			// Add a second to avoid milliseconds skew in AddAfter. | ||||||
|  | 			// See https://github.com/kubernetes/kubernetes/issues/39785#issuecomment-279959133 for more info. | ||||||
|  | 			dsc.enqueueDaemonSetAfter(ds, (time.Duration(ds.Spec.MinReadySeconds)*time.Second)+time.Second) | ||||||
| 		} | 		} | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -233,6 +233,8 @@ func (dc *DeploymentController) requeueStuckDeployment(d *extensions.Deployment, | |||||||
| 		return time.Duration(0) | 		return time.Duration(0) | ||||||
| 	} | 	} | ||||||
| 	glog.V(4).Infof("Queueing up deployment %q for a progress check after %ds", d.Name, int(after.Seconds())) | 	glog.V(4).Infof("Queueing up deployment %q for a progress check after %ds", d.Name, int(after.Seconds())) | ||||||
| 	dc.enqueueAfter(d, after) | 	// Add a second to avoid milliseconds skew in AddAfter. | ||||||
|  | 	// See https://github.com/kubernetes/kubernetes/issues/39785#issuecomment-279959133 for more info. | ||||||
|  | 	dc.enqueueAfter(d, after+time.Second) | ||||||
| 	return after | 	return after | ||||||
| } | } | ||||||
|   | |||||||
| @@ -320,7 +320,9 @@ func (rsc *ReplicaSetController) updatePod(old, cur interface{}) { | |||||||
| 		// "closer" to kubelet (from the deployment to the replica set controller). | 		// "closer" to kubelet (from the deployment to the replica set controller). | ||||||
| 		if !v1.IsPodReady(oldPod) && v1.IsPodReady(curPod) && rs.Spec.MinReadySeconds > 0 { | 		if !v1.IsPodReady(oldPod) && v1.IsPodReady(curPod) && rs.Spec.MinReadySeconds > 0 { | ||||||
| 			glog.V(2).Infof("ReplicaSet %q will be enqueued after %ds for availability check", rs.Name, rs.Spec.MinReadySeconds) | 			glog.V(2).Infof("ReplicaSet %q will be enqueued after %ds for availability check", rs.Name, rs.Spec.MinReadySeconds) | ||||||
| 			rsc.enqueueReplicaSetAfter(rs, time.Duration(rs.Spec.MinReadySeconds)*time.Second) | 			// Add a second to avoid milliseconds skew in AddAfter. | ||||||
|  | 			// See https://github.com/kubernetes/kubernetes/issues/39785#issuecomment-279959133 for more info. | ||||||
|  | 			rsc.enqueueReplicaSetAfter(rs, (time.Duration(rs.Spec.MinReadySeconds)*time.Second)+time.Second) | ||||||
| 		} | 		} | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -319,7 +319,9 @@ func (rm *ReplicationManager) updatePod(old, cur interface{}) { | |||||||
| 		// "closer" to kubelet (from the deployment to the ReplicationController controller). | 		// "closer" to kubelet (from the deployment to the ReplicationController controller). | ||||||
| 		if !v1.IsPodReady(oldPod) && v1.IsPodReady(curPod) && rc.Spec.MinReadySeconds > 0 { | 		if !v1.IsPodReady(oldPod) && v1.IsPodReady(curPod) && rc.Spec.MinReadySeconds > 0 { | ||||||
| 			glog.V(2).Infof("ReplicationController %q will be enqueued after %ds for availability check", rc.Name, rc.Spec.MinReadySeconds) | 			glog.V(2).Infof("ReplicationController %q will be enqueued after %ds for availability check", rc.Name, rc.Spec.MinReadySeconds) | ||||||
| 			rm.enqueueControllerAfter(rc, time.Duration(rc.Spec.MinReadySeconds)*time.Second) | 			// Add a second to avoid milliseconds skew in AddAfter. | ||||||
|  | 			// See https://github.com/kubernetes/kubernetes/issues/39785#issuecomment-279959133 for more info. | ||||||
|  | 			rm.enqueueControllerAfter(rc, (time.Duration(rc.Spec.MinReadySeconds)*time.Second)+time.Second) | ||||||
| 		} | 		} | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michail Kargakis
					Michail Kargakis