Table of Contents

3rd Party Libraries and Contributions

Acknowledgements

  • lokad-shared-libraries - Helper assemblies originally for .NET 3.5 and Silverlight 2.0 which were developed as part of the Open Source effort by Lokad.com (discontinued) | New BSD License
  • @michael-wolfenden - The creator and mastermind of Polly!
  • @ghuntley - Portable Class Library implementation.
  • @mauricedb - Initial async implementation.
  • @robgibbens - Added existing async files to PCL project
  • Hacko - Added extra NotOnCapturedContext call to prevent potential deadlocks when blocking on asynchronous calls
  • @ThomasMentzel - Added ability to capture the results of executing a policy via ExecuteAndCapture
  • @yevhen - Added full control of whether to continue on captured synchronization context or not
  • @reisenberger - Added full async cancellation support
  • @reisenberger - Added async support for ContextualPolicy
  • @reisenberger - Added ContextualPolicy support for circuit-breaker
  • @reisenberger - Extended circuit-breaker for public monitoring and control
  • @reisenberger - Added ExecuteAndCapture support with arbitrary context data
  • @kristianhald and @reisenberger - Added AdvancedCircuitBreaker
  • @reisenberger - Allowed async onRetry delegates to async retry policies
  • @Lumirris - Add new Polly.Net40Async project/package supporting async for .NET 4.0 via Microsoft.Bcl.Async
  • @SteveCote - Added overloads to WaitAndRetry{Async} methods that accept an onRetry delegate which includes the attempt count.
  • @reisenberger - Allowed policies to handle returned results; added strongly-typed policies Policy<TResult>.
  • @christopherbahr - Added optimisation for circuit-breaker hot path.
  • @Finity - Fixed circuit-breaker threshold bug.
  • @reisenberger - Add some missing ExecuteAndCapture{Async} overloads.
  • @brunolauze - Add CancellationToken support to synchronous executions (to support TimeoutPolicy).
  • @reisenberger - Add PolicyWrap.
  • @reisenberger - Add Fallback policy.
  • @reisenberger - Add PolicyKeys and context to all policy executions, as bedrock for policy events and metrics tracking executions.
  • @reisenberger, and contributions from @brunolauze - Add Bulkhead Isolation policy.
  • @reisenberger - Add Timeout policy.
  • @reisenberger - Fix .NET Standard 1.0 targeting. Remove PCL259 target. PCL259 support is provided via .NET Standard 1.0 target, going forward.
  • @reisenberger - Fix CircuitBreaker HalfOpen state and cases when breakDuration is shorter than typical call timeout. Thanks to @vgouw and @kharos for the reports and insightful thinking.
  • @lakario - Tidy CircuitBreaker LastException property.
  • @lakario - Add NoOpPolicy.
  • @Julien-Mialon - Fixes, support and examples for .NET Standard compatibility with Xamarin PCL projects
  • @reisenberger - Add mutable Context and extra overloads taking Context. Allows different parts of a policy execution to exchange data via the mutable Context travelling with each execution.
  • @ankitbko - Add PolicyRegistry for storing and retrieving policies.
  • @reisenberger - Add interfaces by policy type and execution type.
  • @seanfarrow - Add IReadOnlyPolicyRegistry interface.
  • @kesmy - Migrate solution to msbuild15, banish project.json and packages.config
  • @hambudi - Ensure sync TimeoutPolicy with TimeoutStrategy.Pessimistic rethrows delegate exceptions without additional AggregateException.
  • @jiimaho and @Extremo75 - Provide public factory methods for PolicyResult, to support testing.
  • @Extremo75 - Allow fallback delegates to take handled fault as input parameter.
  • @reisenberger and @seanfarrow - Add CachePolicy, with interfaces for pluggable cache providers and serializers.
  • Thanks to the awesome devs at @tretton37 who delivered the following as part of a one-day in-company hackathon led by @reisenberger, sponsored by @tretton37 and convened by @thecodejunkie
    • @matst80 - Allow WaitAndRetry to take handled fault as an input to the sleepDurationProvider, allowing WaitAndRetry to take account of systems which specify a duration to wait as part of a fault response; e.g. Azure CosmosDB may specify this in x-ms-retry-after-ms headers or in a property to an exception thrown by the Azure CosmosDB SDK.
    • @MartinSStewart - Add GetPolicies() extension methods to IPolicyWrap.
    • @jbergens37 - Parallelize test running where possible, to improve overall build speed.
  • @reisenberger - Add new .HandleInner<TException>(...) syntax for handling inner exceptions natively.
  • @rjongeneelen and @reisenberger - Allow PolicyWrap configuration to configure policies via interfaces.
  • @reisenberger - Performance improvements.
  • @awarrenlove - Add ability to calculate cache TTL based on item to cache.
  • @erickhouse - Add a new onBreak overload that provides the prior state on a transition to an open state.
  • @benagain - Bug fix: RelativeTtl in CachePolicy now always returns a ttl relative to time item is cached.
  • @urig - Allow TimeoutPolicy to be configured with Timeout.InfiniteTimeSpan.
  • @reisenberger - Integration with IHttpClientFactory for ASP.NET Core 2.1.
  • @freakazoid182 - WaitAndRetry{Forever} overloads where onRetry takes the retry number as a parameter.
  • @dustyhoppe - Overloads where onTimeout takes thrown exception as a parameter.
  • @flin-zap - Catch missing async continuation control.
  • @reisenberger - Clarify separation of sync and async policies.
  • @reisenberger - Enable extensibility by custom policies hosted external to Polly.
  • @seanfarrow - Enable collection initialization syntax for PolicyRegistry.
  • @moerwald - Code clean-ups, usage of more concise C# members.
  • @cmeeren - Enable cache policies to cache values of default(TResult).
  • @aprooks - Build script tweaks for Mac and Mono.
  • @kesmy - Add SourceLink support, clean up cake build.
  • @simluk - Fix continueOnCaptureContext not being honored in async retry implementation (bug in v7.1.0 only).
  • @jnyrup - Upgrade tests to Fluent Assertions v5.9.0
  • @SimonCropp - Add netcoreapp3.0 target; code clean-ups.
  • @aerotog and @reisenberger - IConcurrentPolicyRegistry methods on PolicyRegistry
  • @reisenberger and @martincostello - Add RateLimit policy.