Skip to content

Conversation

@StounhandJ
Copy link
Contributor

This MR addresses an issue/127 where the BackOffDelay function incorrectly multiplies the delay duration, not taking into account that the attempt count starts from 1, thus the first delay is initially multiplied twice. In the description for this function, what should increase with the sequence. But in fact, it's a passion from the very first call.

Steps to Reproduce:

package main

import (
	"context"
	"errors"
	"fmt"
	"time"

	"github.com/avast/retry-go/v4"
)

var count uint64 = 6
var currentTime = time.Now()

func action() error {
	fmt.Printf("Time: %v\n", time.Since(currentTime).Round(time.Second))
	currentTime = time.Now()
	if count == 0 {
		return nil
	}
	count -= 1
	return errors.New("something went wrong")
}

func main() {
	_ = retry.Do(action,
		retry.Attempts(3),
		retry.Delay(2*time.Second),
		retry.DelayType(retry.BackOffDelay),
		retry.LastErrorOnly(true),
		retry.Context(context.Background()))
}

Observed Output:

Time: 0s
Time: 4s
Time: 8s

Expected Output:

Time: 0s
Time: 2s
Time: 4s

tstromberg added a commit to codeGROOVE-dev/retry that referenced this pull request Jul 28, 2025
tstromberg added a commit to codeGROOVE-dev/retry that referenced this pull request Jul 28, 2025
merge: BackOffDelay multiplies attempts from zero avast#130
@JaSei
Copy link
Collaborator

JaSei commented Oct 14, 2025

Thanks for this PR. I apologize for the delayed response.

@JaSei JaSei merged commit 66013da into avast:master Oct 14, 2025
17 checks passed
@codecov
Copy link

codecov bot commented Oct 14, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (cbf4dbf) to head (6c62c20).
⚠️ Report is 9 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff            @@
##           master   #130       +/-   ##
=========================================
- Coverage   90.86%      0   -90.87%     
=========================================
  Files           2      0        -2     
  Lines         230      0      -230     
=========================================
- Hits          209      0      -209     
+ Misses         17      0       -17     
+ Partials        4      0        -4     
Flag Coverage Δ
unittest ?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

project-mirrors-bot-tu bot pushed a commit to project-mirrors/forgejo-runner that referenced this pull request Oct 15, 2025
This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
| [github.com/avast/retry-go/v4](https://github.com/avast/retry-go) | `v4.6.1` -> `v4.7.0` | [![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2favast%2fretry-go%2fv4/v4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2favast%2fretry-go%2fv4/v4.6.1/v4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>avast/retry-go (github.com/avast/retry-go/v4)</summary>

### [`v4.7.0`](https://github.com/avast/retry-go/releases/tag/v4.7.0)

[Compare Source](avast/retry-go@4.6.1...4.7.0)

#### What's Changed

- support context cancel cause by [@&#8203;NivKeidan](https://github.com/NivKeidan) in [#&#8203;117](avast/retry-go#117)
- Bump github.com/stretchr/testify from 1.10.0 to 1.11.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;136](avast/retry-go#136)
- Add FullJitterBackoffDelay  by [@&#8203;amirrezafahimi](https://github.com/amirrezafahimi) in [#&#8203;128](avast/retry-go#128)
- No delay after final retry on max attempts by [@&#8203;StounhandJ](https://github.com/StounhandJ) in [#&#8203;129](avast/retry-go#129)
- BackOffDelay multiplies attempts from zero by [@&#8203;StounhandJ](https://github.com/StounhandJ) in [#&#8203;130](avast/retry-go#130)
- add Go version 1.25 to test matrix for expanded compatibility testing by [@&#8203;JaSei](https://github.com/JaSei) in [#&#8203;142](avast/retry-go#142)

#### New Contributors

- [@&#8203;NivKeidan](https://github.com/NivKeidan) made their first contribution in [#&#8203;117](avast/retry-go#117)
- [@&#8203;amirrezafahimi](https://github.com/amirrezafahimi) made their first contribution in [#&#8203;128](avast/retry-go#128)
- [@&#8203;StounhandJ](https://github.com/StounhandJ) made their first contribution in [#&#8203;129](avast/retry-go#129)

**Full Changelog**: <avast/retry-go@4.6.1...v4.7.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC), Automerge - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDYuMCIsInVwZGF0ZWRJblZlciI6IjQxLjE0Ni4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJLaW5kL0RlcGVuZGVuY3lVcGRhdGUiLCJydW4tZW5kLXRvLWVuZC10ZXN0cyJdfQ==-->

Reviewed-on: https://code.forgejo.org/forgejo/runner/pulls/1092
Reviewed-by: earl-warren <[email protected]>
Co-authored-by: Renovate Bot <[email protected]>
Co-committed-by: Renovate Bot <[email protected]>
mitchnielsen added a commit to PrefectHQ/terraform-provider-prefect that referenced this pull request Nov 6, 2025
The retry-go v4.7.0 update in this PR changes how BackOffDelay counts
attempts - it now starts from 0 instead of 1, which cuts all retry delays
in half. This caused acceptance test failures due to race conditions and
API rate limiting (we saw 429 errors in the logs).

We now explicitly configure retry delays with a doubled base delay (200ms
instead of 100ms) to restore the timing behavior from v4.6.1. This only
affects the block schema lookup retry logic.

Context: https://github.com/PrefectHQ/terraform-provider-prefect/actions/runs/19077368425
Related: avast/retry-go#130
mitchnielsen added a commit to PrefectHQ/terraform-provider-prefect that referenced this pull request Nov 6, 2025
The retry-go v4.7.0 update in this PR changes how BackOffDelay counts
attempts - it now starts from 0 instead of 1, which cuts all retry delays
in half. This caused acceptance test failures due to race conditions and
API rate limiting (we saw 429 errors in the logs).

We now explicitly configure retry delays with a doubled base delay (200ms
instead of 100ms) to restore the timing behavior from v4.6.1. This only
affects the block schema lookup retry logic.

Context: https://github.com/PrefectHQ/terraform-provider-prefect/actions/runs/19077368425
Related: avast/retry-go#130
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants