NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #1709 most downloaded on NuGet
Polly is a .NET 4.5 / .NET Standard 1.1 library that allows developers to express resilience and transient fault handling policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation and Fallback in a fluent and thread-safe manner.
Last release 9 years ago
no release in 18 months
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 35 of 35 stable releases
1 version withdrawn
withdrawn after publishing
127 years old
40 releases · first in 1900
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; Cache; and PolicyWrap. See release notes back to v5.0.0 for full details.
5.9.0
---------------------
- Allow Timeout.InfiniteTimeSpan (no timeout) for TimeoutPolicy.
- Add .AsPolicy<TResult> and .AsAsyncPolicy<TResult> methods for converting non-generic policies to generic policies.
- Per Semver, indicates deprecation of overloads and properties intended to be removed or renamed in Polly v6.
5.8.0
---------------------
- Add a new onBreak overload that provides the prior state on a transition to an open state
- Bug fix: RelativeTtl in CachePolicy now always returns a ttl relative to time item is cached
5.7.0
---------------------
- Minor cache fixes
- Add ability to calculate cache Ttl based on item to cache
- Allow user-created custom policies
5.6.1
---------------------
- Extend PolicyWrap syntax with interfaces
5.6.0
---------------------
- Add ability to handle inner exceptions natively: .HandleInner<TEx>()
- Allow WaitAndRetry policies to calculate wait based on the handled fault
- Add the ability to access the policies within an IPolicyWrap
- Allow PolicyWrap to take interfaces as parameters
- Bug fix: set context keys for generic execute method with PolicyWrap
- Bug fix: generic TResult method with non-generic fallback policy
- Performance improvements
5.5.0
---------------------
- Bug fix: non-generic CachePolicy with PolicyWrap
- Add Cache interfaces
5.4.0
---------------------
- Add CachePolicy: cache-aside pattern, with interfaces for pluggable cache providers and serializers.
- Bug fix: Sync TimeoutPolicy in pessimistic mode no longer interposes AggregateException.
- Provide public factory methods for PolicyResult, to support testing.
- Fallback delegates can now take handled fault as input parameter.
5.3.1
---------------------
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)
5.3.0
---------------------
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
One column per quarter.
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; Cache; and PolicyWrap. See release notes back to v5.0.0 for full details.
5.8.0
---------------------
- Add a new onBreak overload that provides the prior state on a transition to an open state
- Bug fix: RelativeTtl in CachePolicy now always returns a ttl relative to time item is cached
5.7.0
---------------------
- Minor cache fixes
- Add ability to calculate cache Ttl based on item to cache
- Allow user-created custom policies
5.6.1
---------------------
- Extend PolicyWrap syntax with interfaces
5.6.0
---------------------
- Add ability to handle inner exceptions natively: .HandleInner<TEx>()
- Allow WaitAndRetry policies to calculate wait based on the handled fault
- Add the ability to access the policies within an IPolicyWrap
- Allow PolicyWrap to take interfaces as parameters
- Bug fix: set context keys for generic execute method with PolicyWrap
- Bug fix: generic TResult method with non-generic fallback policy
- Performance improvements
5.5.0
---------------------
- Bug fix: non-generic CachePolicy with PolicyWrap
- Add Cache interfaces
5.4.0
---------------------
- Add CachePolicy: cache-aside pattern, with interfaces for pluggable cache providers and serializers.
- Bug fix: Sync TimeoutPolicy in pessimistic mode no longer interposes AggregateException.
- Provide public factory methods for PolicyResult, to support testing.
- Fallback delegates can now take handled fault as input parameter.
5.3.1
---------------------
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)
5.3.0
---------------------
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; Cache; and PolicyWrap. See release notes back to v5.0.0 for full details.
5.7.0
---------------------
- Minor cache fixes
- Add ability to calculate cache Ttl based on item to cache
- Allow user-created custom policies
5.6.1
---------------------
- Extend PolicyWrap syntax with interfaces
5.6.0
---------------------
- Add ability to handle inner exceptions natively: .HandleInner<TEx>()
- Allow WaitAndRetry policies to calculate wait based on the handled fault
- Add the ability to access the policies within an IPolicyWrap
- Allow PolicyWrap to take interfaces as parameters
- Bug fix: set context keys for generic execute method with PolicyWrap
- Bug fix: generic TResult method with non-generic fallback policy
- Performance improvements
5.5.0
---------------------
- Bug fix: non-generic CachePolicy with PolicyWrap
- Add Cache interfaces
5.4.0
---------------------
- Add CachePolicy: cache-aside pattern, with interfaces for pluggable cache providers and serializers.
- Bug fix: Sync TimeoutPolicy in pessimistic mode no longer interposes AggregateException.
- Provide public factory methods for PolicyResult, to support testing.
- Fallback delegates can now take handled fault as input parameter.
5.3.1
---------------------
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)
5.3.0
---------------------
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; Cache; and PolicyWrap. See release notes back to v5.0.0 for full details.
5.6.1
---------------------
- Extend PolicyWrap syntax with interfaces
5.6.0
---------------------
- Add ability to handle inner exceptions natively: .HandleInner<TEx>()
- Allow WaitAndRetry policies to calculate wait based on the handled fault
- Add the ability to access the policies within an IPolicyWrap
- Allow PolicyWrap to take interfaces as parameters
- Bug fix: set context keys for generic execute method with PolicyWrap
- Bug fix: generic TResult method with non-generic fallback policy
- Performance improvements
5.5.0
---------------------
- Bug fix: non-generic CachePolicy with PolicyWrap
- Add Cache interfaces
5.4.0
---------------------
- Add CachePolicy: cache-aside pattern, with interfaces for pluggable cache providers and serializers.
- Bug fix: Sync TimeoutPolicy in pessimistic mode no longer interposes AggregateException.
- Provide public factory methods for PolicyResult, to support testing.
- Fallback delegates can now take handled fault as input parameter.
5.3.1
---------------------
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)
5.3.0
---------------------
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; Cache; and PolicyWrap. See release notes back to v5.0.0 for full details.
5.6.0
---------------------
- Add ability to handle inner exceptions natively: .HandleInner<TEx>()
- Allow WaitAndRetry policies to calculate wait based on the handled fault
- Add the ability to access the policies within an IPolicyWrap
- Allow PolicyWrap to take interfaces as parameters
- Bug fix: set context keys for generic execute method with PolicyWrap
- Bug fix: generic TResult method with non-generic fallback policy
- Performance improvements
5.5.0
---------------------
- Bug fix: non-generic CachePolicy with PolicyWrap
- Add Cache interfaces
5.4.0
---------------------
- Add CachePolicy: cache-aside pattern, with interfaces for pluggable cache providers and serializers.
- Bug fix: Sync TimeoutPolicy in pessimistic mode no longer interposes AggregateException.
- Provide public factory methods for PolicyResult, to support testing.
- Fallback delegates can now take handled fault as input parameter.
5.3.1
---------------------
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)
5.3.0
---------------------
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; Cache; and PolicyWrap. See release notes back to v5.0.0 for full details. v5.0.5 includes important circuit-breaker fixes.
5.5.0
---------------------
- Bug fix: non-generic CachePolicy with PolicyWrap
- Add Cache interfaces
5.4.0
---------------------
- Add CachePolicy: cache-aside pattern, with interfaces for pluggable cache providers and serializers.
- Bug fix: Sync TimeoutPolicy in pessimistic mode no longer interposes AggregateException.
- Provide public factory methods for PolicyResult, to support testing.
- Fallback delegates can now take handled fault as input parameter.
5.3.1
---------------------
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)
5.3.0
---------------------
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; Cache; and PolicyWrap. See release notes back to v5.0.0 for full details. v5.0.5 includes important circuit-breaker fixes.
5.4.0
---------------------
- Add CachePolicy: cache-aside pattern, with interfaces for pluggable cache providers and serializers.
- Bug fix: Sync TimeoutPolicy in pessimistic mode no longer interposes AggregateException.
- Provide public factory methods for PolicyResult, to support testing.
- Fallback delegates can now take handled fault as input parameter.
5.3.1
---------------------
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)
5.3.0
---------------------
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; and PolicyWrap. See release notes back to v5.0.0 for full details. v5.0.5 includes important circuit-breaker fixes.
5.3.1
---------------------
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)
5.3.0
---------------------
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; and PolicyWrap. See release notes back to v5.0.0 for full details. v5.0.5 includes important circuit-breaker fixes.
5.3.0
---------------------
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
v5.0 is a major release with significant new resilience policies: Timeout; Bulkhead Isolation; Fallback; and PolicyWrap. See release notes back to v5.0.0 for full details. v5.0.5 includes important circuit-breaker fixes.
5.2.0
---------------------
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
5.1.0
---------------------
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
5.0.6
---------------------
- Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
5.0.5
---------------------
- Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break duration, during half-open state.
- Bug fix: Prevent duplicate raising of the onBreak delegate, if executions started when a circuit was closed, return faults when a circuit has already opened.
- Optimisation: Optimise hotpaths for Circuit-Breaker, Retry and Fallback policies.
- Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
5.0.4 pre
---------------------
- (.NET40Async package changes only)
5.0.3 RTM
---------------------
- Refine implementation of cancellable synchronous WaitAndRetry
- Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the unobserved cancellation (issue 188).
5.0.2 alpha
---------------------
- .NETStandard1.0 target: Correctly state dependencies.
- .NETStandard1.0 target: Fix SemVer stamping of Polly.dll.
- PCL259 project and target: Remove, in favour of .NETStandard1.0 target. PCL259 targets are still supported, via .NETStandard1.0 target.
- Mark Polly.dll as CLSCompliant.
5.0.1 alpha
---------------------
- Add a .NETStandard1.0 target.
5.0.0 alpha
---------------------
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures.
- Fallback policy: provides for a fallback execution or value, in case of overall failure
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy.
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics.
- Add CancellationToken support to synchronous executions.
- Add some missing ExecuteAndCapture/Async overloads.
- Remove invalid ExecuteAsync overloads taking (but not making use of) a CancellationToken
- Provide .NET4.0 support uniquely through Polly.NET40Async package
- Retire ContextualPolicy (not part of documented API; support now in Policy base class)
- Discontinue .NET3.5 support
4.3.0
---------------------
- Added ability for policies to handle return results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug.
4.2.4
---------------------
- Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count.
4.2.3
---------------------
- Cleaned up new Polly.Net40Async NuGet package, removing Polly.dll and unused framework folders.
4.2.2
---------------------
- Add new Polly.Net40Async project supporting async for .NET40 via Microsoft.Bcl.Async. This is available as separate Nuget packages Polly.Net40Async and Polly.Net40Async-signed.
4.2.1
---------------------
- Allowed async onRetry delegates to async retry policies.
4.2.0
---------------------
- Added AdvancedCircuitBreaker - Thanks to @reisenberger and @kristianhald
4.1.2
---------------------
- Fixed an issue with the onReset delegate of the CircuitBreaker.
4.1.1
---------------------
- Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
4.1.0
---------------------
- Add Wait and retry forever policy - Thanks to @nedstoyanov
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
4.0.0
---------------------
- Add async support and circuit-breaker support for ContextualPolicy
- Add manual control of circuit-breaker (reset and manual circuit isolation)
- Add public reporting of circuit-breaker state, for health/performance monitoring
- Add delegates on changes of circuit state - Thanks to @reisenberger
3.0.0
---------------------
- Add cancellation support for all async Policy execution - Thanks to @reisenberger
2.2.7
---------------------
- Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
2.2.6
---------------------
- Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchronization context - Thanks to @yevhen
2.2.5
---------------------
- Policies with a retry count of zero are now allowed
2.2.4
---------------------
- Add .NET Core support
2.2.3
---------------------
- Fix PCL implementation of `SystemClock.Reset`
- Added ability to capture the results of executing a policy via `ExecuteAndCapture`
2.2.2
---------------------
- Added extra `NotOnCapturedContext` call to prevent potential deadlocks when blocking on asynchronous calls
2.2.1
---------------------
- Replaced non-blocking sleep implementation with a blocking one for PCL
2.2.0
---------------------
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
2.1.0
---------------------
- Added Async Support (.NET Framework 4.5 Only)
2.0.0
---------------------
- Added Portable Class Library
- The "Polly" NuGet package is now no longer strongly named. The strongly named NuGet package is now "Polly-Signed"
1.1.0
---------------------
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution
Nothing published for this version
Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
Nothing published for this version
Update NETStandard.Library dependency to latest 1.6.1 for .NetStandard1.0 target. Resolves compatibility for some Xamarin targets.
Bug fix: Prevent request stampede during half-open state of CircuitBreaker and AdvancedCircuitBreaker. Enforce only one new trial call per break durat
LastException property return null rather than a fake exception.Minor breaking change: Where a user delegate does not observe cancellation, Polly will now honour the delegate's outcome rather than throw for the uno…
Nothing published for this version
Nothing published for this version
Nothing published for this version
Added ability for policies to handle returned results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug. Thanks to @reisenberge
Added overloads to WaitAndRetry and WaitAndRetryAsync methods that accept an onRetry delegate which includes the attempt count. Thanks to @SteveCote
Updated the Polly.Net40Async NuGet package to enable async via the SUPPORTSASYNC constant. Cleaned up the build scripts in order to ensure unnecessary
Add new Polly.Net40Async project/package supporting async for .NET40 via Microsoft.Bcl.Async. Thanks to @Lumirris
Allowed async onRetry delegates to async retry policies. Thanks to @reisenberger
Add AdvancedCircuitBreaker. Thanks to @reisenberger and @kristianhald
Fixed an issue with the onReset delegate of the CircuitBreaker.
Add ExecuteAndCapture support with arbitrary context data - Thanks to @reisenberger
Add Wait and retry forever policy - Thanks to @nedstoyanov
Add async support and circuit-breaker support for ContextualPolicy
Add cancellation support for all async Policy execution - Thanks to @reisenberger
Fixes an issue where continueOnCapturedContext needed to be specified in two places (on action execution and Policy configuration), when wanting to fl
Async sleep fix, plus added continueOnCapturedContext parameter on async methods to control whether continuation and retry will run on captured synchr
Policies with a retry count of zero are now allowed - Thanks to @nelsonghezzi
- Add .NET Core support
Fix PCL implementation of SystemClock.Reset
SystemClock.ResetExecuteAndCapture - Thanks to @ThomasMentzelAdded extra NotOnCapturedContext call to prevent potential deadlocks when blocking on asynchronous calls - Thanks to Hacko
NotOnCapturedContext call to prevent potential deadlocks when blocking on asynchronous calls - Thanks to HackoReplaced non-blocking sleep implementation with a blocking one for PCL
PCL Profile updated from Profile78 -> Profile 259
Added Async Support (.NET Framework 4.5 Only) - Massive thanks to @mauricedb for the implementation
Added Portable Class Library (Issue #4) - Thanks to @ghuntley for the implementation
Your coding agent can read these notes before it upgrades. Set up the MCP server →