Skip to content

Commit

Permalink
Remove waitCreatingAndDeleteOldPods
Browse files Browse the repository at this point in the history
  • Loading branch information
Luiz Felipe Takakura committed Aug 7, 2019
1 parent 0f68d5c commit 2b1a9b4
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 109 deletions.
2 changes: 1 addition & 1 deletion controller/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4799,7 +4799,7 @@ cmd:
}
})

It("should stop on waitCreatingAndDeleteOldPods", func() {
It("should stop on waitCreatingPods", func() {
yamlString := `
name: scheduler-name-cancel
autoscaling:
Expand Down
113 changes: 5 additions & 108 deletions controller/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,8 @@ func rollback(
}

waitTimeout := willTimeoutAt.Sub(time.Now())
waitCreatingAndDeleteOldPods(logger, clientset, redisClient, waitTimeout, configYAML,
newlyCreatedPods, nil, nil, nil, mr)
waitCreatingPods(logger, clientset, waitTimeout, configYAML.Name,
newlyCreatedPods, nil, mr)
}
}

Expand Down Expand Up @@ -216,6 +216,7 @@ func waitTerminatingPods(
exit := true
select {
case <-ticker.C:
// operationManger is nil when rolling back (rollback can't be canceled)
if operationManager != nil && operationManager.WasCanceled() {
logger.Warn("operation was canceled")
return false, true
Expand Down Expand Up @@ -276,7 +277,8 @@ func waitCreatingPods(
exit := true
select {
case <-ticker.C:
if operationManager.WasCanceled() {
// operationManger is nil when rolling back (rollback can't be canceled)
if operationManager != nil && operationManager.WasCanceled() {
logger.Warn("operation was canceled")
return false, true
}
Expand Down Expand Up @@ -337,111 +339,6 @@ func waitCreatingPods(
return false, false
}

func waitCreatingAndDeleteOldPods(
l logrus.FieldLogger,
clientset kubernetes.Interface,
redisClient redisinterfaces.RedisClient,
timeout time.Duration,
configYAML *models.ConfigYAML,
createdPods []v1.Pod,
podsToDelete []v1.Pod,
roomManager models.RoomManager,
operationManager *models.OperationManager,
mr *models.MixedMetricsReporter,
) (deletedPods []v1.Pod, timedout, wasCanceled bool) {
deletedPods = []v1.Pod{}
logger := l.WithFields(logrus.Fields{
"operation": "controller.waitCreatingAndDeleteOldPods",
"scheduler": configYAML.Name,
})

timeoutTimer := time.NewTimer(timeout)
defer timeoutTimer.Stop()
ticker := time.NewTicker(1 * time.Second)
defer ticker.Stop()

for {
exit := true
select {
case <-ticker.C:
if operationManager.WasCanceled() {
logger.Warn("operation was canceled")
return nil, false, true
}

for _, pod := range createdPods {
var createdPod *v1.Pod
err := mr.WithSegment(models.SegmentPod, func() error {
var err error
createdPod, err = clientset.CoreV1().Pods(configYAML.Name).Get(
pod.GetName(), getOptions,
)
return err
})
if err != nil && strings.Contains(err.Error(), "not found") {
exit = false
logger.
WithError(err).
WithField("pod", pod.GetName()).
Info("error creating pod, recreating...")

pod.ResourceVersion = ""
err = mr.WithSegment(models.SegmentPod, func() error {
var err error
_, err = clientset.CoreV1().Pods(configYAML.Name).Create(&pod)
return err
})
if err != nil {
logger.
WithError(err).
WithField("pod", pod.GetName()).
Errorf("error recreating pod")
}
break
}

//HACK! Trying to detect if we are running unit tests
// len(createdPod.Status.Phase) > 0
if len(createdPod.Status.Phase) > 0 && !models.IsPodReady(createdPod) {
logger.WithField("pod", createdPod.GetName()).Debug("pod not ready yet, waiting...")
exit = false
break
}

if podsToDelete != nil && len(podsToDelete) > 0 {
err = DeletePodAndRoom(
logger,
roomManager,
mr,
clientset,
redisClient,
configYAML,
podsToDelete[0].GetName(),
reportersConstants.ReasonUpdate,
)
if err == nil || strings.Contains(err.Error(), "redis") {
deletedPods = append(deletedPods, podsToDelete[0])
podsToDelete = podsToDelete[1:]
}
if err != nil {
logger.WithError(err).Debugf("error deleting pod %s", pod.GetName())
}
}
}
case <-timeoutTimer.C:
logger.Error("timeout waiting for rooms to be created")
return nil, true, false
}

if exit {
logger.Info("creating pods are successfully running")
break
}
}

return deletedPods, false, false
}

// DeletePodAndRoom deletes the pod and removes the room from redis
func DeletePodAndRoom(
logger logrus.FieldLogger,
Expand Down

0 comments on commit 2b1a9b4

Please sign in to comment.