Skip to content

Commit

Permalink
Merge pull request #675 from kayac/fix/waiter-max-delay
Browse files Browse the repository at this point in the history
Set shorten waiter max delay.
  • Loading branch information
fujiwara authored Mar 13, 2024
2 parents 0dfb736 + a236477 commit 9f7a849
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
1 change: 1 addition & 0 deletions ecspresso.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ const dryRunStr = "DRY RUN"

var Version string
var delayForServiceChanged = 3 * time.Second
var waiterMaxDelay = 15 * time.Second
var spcIndent = " "

type TaskDefinition = types.TaskDefinition
Expand Down
8 changes: 6 additions & 2 deletions run.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,9 @@ func (d *App) waitTask(ctx context.Context, task *types.Task, untilRunning bool)
id := arnToName(*task.TaskArn)
if untilRunning {
d.Log("Waiting for task ID %s until running", id)
waiter := ecs.NewTasksRunningWaiter(d.ecs)
waiter := ecs.NewTasksRunningWaiter(d.ecs, func(o *ecs.TasksRunningWaiterOptions) {
o.MaxDelay = waiterMaxDelay
})
if err := waiter.Wait(ctx, d.DescribeTasksInput(task), d.Timeout()); err != nil {
return err
}
Expand All @@ -223,7 +225,9 @@ func (d *App) waitTask(ctx context.Context, task *types.Task, untilRunning bool)
}

d.Log("Waiting for task ID %s until stopped", id)
waiter := ecs.NewTasksStoppedWaiter(d.ecs)
waiter := ecs.NewTasksStoppedWaiter(d.ecs, func(o *ecs.TasksStoppedWaiterOptions) {
o.MaxDelay = waiterMaxDelay
})
if err := waiter.Wait(ctx, d.DescribeTasksInput(task), d.Timeout()); err != nil {
return fmt.Errorf("failed to wait task: %w", err)
}
Expand Down
17 changes: 14 additions & 3 deletions wait.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ func (d *App) WaitServiceStable(ctx context.Context, sv *Service) error {
defer cancel()

tick := time.NewTicker(10 * time.Second)
st := &showState{lastEventAt: time.Now()}
go func() {
st := &showState{lastEventAt: time.Now()}
for {
select {
case <-waitCtx.Done():
Expand All @@ -88,10 +88,19 @@ func (d *App) WaitServiceStable(ctx context.Context, sv *Service) error {
}
}()

waiter := ecs.NewServicesStableWaiter(d.ecs)
waiter := ecs.NewServicesStableWaiter(d.ecs, func(o *ecs.ServicesStableWaiterOptions) {
o.MaxDelay = waiterMaxDelay
})
if err := waiter.Wait(ctx, d.DescribeServicesInput(), d.Timeout()); err != nil {
return fmt.Errorf("failed to wait for service stable: %w", err)
}
cancel() // stop the showServiceStatus

<-time.After(delayForServiceChanged)
// show the service status once more (correct all logs)
if err := d.showServiceStatus(ctx, st); err != nil {
d.Log("[WARNING] %s", err.Error())
}
return nil
}

Expand Down Expand Up @@ -125,7 +134,9 @@ func (d *App) WaitForCodeDeploy(ctx context.Context, sv *Service) error {
d.Log("Waiting for a deployment successful ID: " + dpID)
go d.codeDeployProgressBar(ctx, dpID)

waiter := codedeploy.NewDeploymentSuccessfulWaiter(d.codedeploy)
waiter := codedeploy.NewDeploymentSuccessfulWaiter(d.codedeploy, func(o *codedeploy.DeploymentSuccessfulWaiterOptions) {
o.MaxDelay = waiterMaxDelay
})
return waiter.Wait(
ctx,
&codedeploy.GetDeploymentInput{DeploymentId: &dpID},
Expand Down

0 comments on commit 9f7a849

Please sign in to comment.