modify Poll func to pass in backoff interval

pull/32302/head
mrinalirao 3 years ago
parent 15288caf64
commit a5add7e361

@ -151,7 +151,7 @@ func TestCloud_runTasksWithTaskResults(t *testing.T) {
trs := taskResultSummarizer{
cloud: b,
}
c.context.Poll(func(i int) (bool, error) {
c.context.Poll(taskStageBackoffMin, taskStageBackoffMax, func(i int) (bool, error) {
cont, _, _ := trs.Summarize(c.context, c.writer, c.taskStage())
if cont {
return true, nil

@ -8,6 +8,11 @@ import (
tfe "github.com/hashicorp/go-tfe"
)
const (
taskStageBackoffMin = 4000.0
taskStageBackoffMax = 12000.0
)
type taskStages map[tfe.Stage]*tfe.TaskStage
type taskStageSummarizer interface {
@ -67,7 +72,7 @@ func (b *Cloud) runTaskStage(ctx *IntegrationContext, output IntegrationOutputWr
summarizers = append(summarizers, s)
}
return ctx.Poll(func(i int) (bool, error) {
return ctx.Poll(taskStageBackoffMin, taskStageBackoffMax, func(i int) (bool, error) {
options := tfe.TaskStageReadOptions{
Include: []tfe.TaskStageIncludeOpt{tfe.TaskStageTaskResults},
}
@ -88,14 +93,14 @@ func (b *Cloud) runTaskStage(ctx *IntegrationContext, output IntegrationOutputWr
errs.Append(err)
break
}
if !cont {
return false, nil
continue
}
// cont is true and we must continue to poll
if msg != nil {
if i%4 == 0 && i > 0 {
output.OutputElapsed(*msg, len(*msg)) // Up to 2 digits are allowed by the max message allocation
}
output.OutputElapsed(*msg, len(*msg)) // Up to 2 digits are allowed by the max message allocation
}
return true, nil
}

@ -38,14 +38,14 @@ type integrationCLIOutput struct {
var _ IntegrationOutputWriter = (*integrationCLIOutput)(nil) // Compile time check
func (s *IntegrationContext) Poll(every func(i int) (bool, error)) error {
func (s *IntegrationContext) Poll(backoffMinInterval float64, backoffMaxInterval float64, every func(i int) (bool, error)) error {
for i := 0; ; i++ {
select {
case <-s.StopContext.Done():
return s.StopContext.Err()
case <-s.CancelContext.Done():
return s.CancelContext.Err()
case <-time.After(backoff(backoffMin, backoffMax, i)):
case <-time.After(backoff(backoffMinInterval, backoffMaxInterval, i)):
// blocks for a time between min and max
}

Loading…
Cancel
Save