Go Resiliency Versions Save

Resiliency patterns for golang

v1.6.0

2 months ago
  • 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.

v1.5.0

4 months ago
  • Adds Retrier.WithInfiniteRetry() and Retrier.RunFn() to handle more complex cases (thanks to Maxime Beckman).

v1.4.0

8 months ago
  • 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).

v1.3.0

1 year ago
  • Increased minimum Golang version to 1.13.
  • Fix a goroutine leak in Deadline.Run() on ErrTimeOut.
  • Add a go.mod file to conform to more recent Golang version standards.
  • Use errors.Is when classifying errors for the Retrier (thanks to Taufik Rama).
  • Add implementation of LimitedExponentialBackoff for the Retrier (thanks to tukeJonny).

v1.2.0

4 years ago

Note: This release requires Golang at least 1.7, which is higher than the previous release. All the versions being dropped are multiple years old and no longer supported upstream, so I'm not counting this as a breaking change.

  • Add RunCtx method on Retrier 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.

v1.1.0

6 years ago
  • Improve documentation and fix some typos.
  • Bump CI to ensure we support newer Golang versions.
  • Add IsEmpty() method on Semaphore.