Note: I will occasionally bump the minimum required Golang version without bumping the major version of this package, which violates the official Golang packaging convention around breaking changes. Typically the versions being dropped are multiple years old and long unsupported.
- Adds
Retrier.WithSurfaceWorkErrors()
to ask the Retrier to always return the work function's error even if a context deadline is hit (thanks to Elizabeth Cox).
- Adds
Breaker.GetState()
to check the breaker state directly (e.g. for monitoring metrics). - Fix a race condition in the Batcher that could have lead to a panic if multiple batches ended up executing at once (thanks to Tiago Peczenyj for the discovery and very clear bug report).
- Fix
Batcher.Shutdown()
to behave correctly when multiple batches end up executing at once. - A variety of small refactors, simplifications, and test suite improvements.
- Adds
Retrier.WithInfiniteRetry()
andRetrier.RunFn()
to handle more complex cases (thanks to Maxime Beckman).
- Adds
Batcher.Shutdown()
to flush any pending work without waiting for the timer, e.g. on application shutdown (thanks to Ivan Stankov). - Fix possible memory leaks of Timer objects in Deadline, Retrier, and Semaphore (thanks to Dmytro Nozdrin).
- Increased minimum Golang version to 1.13.
- Fix a goroutine leak in
Deadline.Run()
onErrTimeOut
. - Add a
go.mod
file to conform to more recent Golang version standards. - Use
errors.Is
when classifying errors for theRetrier
(thanks to Taufik Rama). - Add implementation of
LimitedExponentialBackoff
for theRetrier
(thanks to tukeJonny).
- Increased minimum Golang version to 1.7.
- Add
RunCtx
method onRetrier
to support running with a context. - Ensure the
Retrier
's use of random numbers is concurrency-safe. - Bump CI to ensure we support newer Golang versions.
- Improve documentation and fix some typos.
- Bump CI to ensure we support newer Golang versions.
- Add
IsEmpty()
method onSemaphore
.
Initial release.