Polly 5.3.1

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.

Install-Package Polly -Version 5.3.1
dotnet add package Polly --version 5.3.1
paket add Polly --version 5.3.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

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

Version History

Version Downloads Last updated
5.3.1 (current version) 100,816 8/6/2017
5.3.0 22,904 7/27/2017
5.2.0 66,649 6/28/2017
5.1.1-v5-x-cachealpha0001 6,213 6/2/2017
5.1.0 124,956 5/4/2017
5.0.6 171,383 2/11/2017
5.0.5 142,470 2/4/2017
5.0.3 74,547 1/6/2017
5.0.2-v5-0-alpha0001 8,193 11/22/2016
5.0.1-v5-0-alpha0001 9,095 10/25/2016
4.5.0-beta-netstandar-0001 17,304 9/6/2016
4.3.0 376,898 6/30/2016
4.2.4 15,801 6/17/2016
4.2.3 10,061 6/7/2016
4.2.2 2,923 6/2/2016
4.2.1 12,243 5/26/2016
4.2.0 55,333 4/14/2016
4.1.2 69,747 3/17/2016
4.1.1 7,365 3/11/2016
4.1.0 518 3/10/2016
4.0.0 41,874 2/18/2016
3.0.0 32,195 1/11/2016
2.2.7 11,490 1/1/2016
2.2.6 1,000 12/30/2015
2.2.5 4,440 12/28/2015
2.2.4 22,653 12/3/2015
2.2.3 78,021 8/9/2015
2.2.2 27,582 6/2/2015
2.2.1 24,064 2/15/2015
2.2.0 5,703 1/25/2015
2.1.0 9,795 11/28/2014
2.0.0 13,433 3/13/2014
1.1.0 2,104 6/16/2013
1.0.0 496 5/5/2013