- Clean the Polly.Utils.ObjectPool class by @gabidabet in #2312
- Fix issue #2288 by @gabidabet in #2313
- Remove CA2211 NoWarn by @gabidabet in #2316
- Remove CA1816 NoWarn by @gabidabet in #2317
- Update signing workflow by @martincostello in #2323
- Fix hedging failing test by @peter-csala in #2321
- Fix S2184, S2104 in Polly.Spec by @ShawnWu33 in #2328
- Add
RetryAfter
toBrokenCircuitException
. by @DL444 in #2324 - Supress S4039, CA1010 in Context.Dictionary by @ShawnWu33 in #2329
- Seperate mutation tests by @ShawnWu33 in #2331
- Add chained rate limiter example by @martincostello in #2344
- Update cake tools by @martincostello in #2293
- Update Microsoft.Extensions.Caching.Memory by @peter-csala in #2347
- Add TelemetrySource to ExecutionRejectedException by @peter-csala in #2346
- Document TelemetrySource property of the ExecutionRejectedException by @peter-csala in #2355
- Extend snippet explanation by @martincostello in #2373
- Update to .NET 9 SDK by @martincostello in #2003
- Use
[DebuggerDisableUserUnhandledExceptions]
by @martincostello in #2003
- Update sponsors by @martincostello in #2169
- Tweak sponsorship details by @martincostello in #2170
- Fix IDE0011 warning by @Zombach in #2171
- Fix SA1414 warning by @Zombach in #2172
- Fix SA1649 warning by @Zombach in #2173
- Fix CA1068 warning by @iamdmitrij in #2182
- Fix CA1033 warning by @Zombach in #2193
- Fix S4049 warning by @Zombach in #2195
- Fix S3878 warning by @Zombach in #2197
- Fix S103 warning by @Zombach in #2196
- Fix CA1032 warning by @Zombach in #2194
- Fix S3971 warning by @Zombach in #2203
- Fix S3246 warning by @Zombach in #2204
- Fix S4457 warning by @Zombach in #2202
- Fix warning CA1815 by @Zombach in #2211
- Fix warning CA1716 by @Zombach in #2212
- Fix warning CA1710 by @Zombach in #2213
- #nullable enable remove extra empty line by @Zombach in #2214
- Warning Suppression CA1062 by @Zombach in #2216
- Fix warning CA1062#ContextualTtl by @Zombach in #2217
- Fix warning CA1062#DefaultCacheKeyStrategy by @Zombach in #2218
- Fix warning CA1062#NoOpPolicy by @Zombach in #2219
- Fix warning CA1062#AsyncNoOpPolicy by @Zombach in #2220
- fix warning CA1805 by @Fanatic-off in #2221
- Fix warning CA1062#RateLimitPolicy by @Zombach in #2222
- Fix warning CA1062#RetryPolicy by @Zombach in #2224
- Fix warning CA1062#AsyncRetryPolicy by @Zombach in #2225
- Fix warning CA1062#AsyncRateLimitPolicy by @Zombach in #2223
- Specs is at the end of the test class by @Zombach in #2226
- Fix warning CA1062#TimeoutPolicy by @Zombach in #2227
- Fix warning CA1062#AsyncTimeoutPolicy by @Zombach in #2228
- Fix warning CA1062#IPolicyWrapExtension by @Zombach in #2229
- Fix warning CA1062#ISyncPolicyPolicyWrapExtensions by @Zombach in #2230
- Fix warning CA1062#FallbackPolicy by @Zombach in #2232
- Fix warning CA1062#AsyncFallbackPolicy by @Zombach in #2233
- Fix warning CA1062#AsyncCircuitBreakerPolicy by @Zombach in #2235
- Fix warning CA1062#AsyncBulkheadPolicy by @Zombach in #2237
- Fix warning CA1062#AsyncCachePolicy by @Zombach in #2239
- Fix warning CA1062#CachePolicy by @Zombach in #2238
- Fix warning CA1062#CacheTResultSyntax by @Zombach in #2241
- Fix warning CA1062#AsyncCacheTResultSyntax by @Zombach in #2243
- Fix warning CA1062#AsyncCacheSyntax by @Zombach in #2242
- Fix warning CA1062#IAsyncPolicyPolicyWrapExtensions by @Zombach in #2231
- Fix warning CA1062#BulkheadPolicy by @Zombach in #2236
- Fix warning CA1062#CacheSyntax by @Zombach in #2240
- Fix warning CA1062#CircuitBreakerPolicy by @Zombach in #2234
- Validate arguments of public methods by @Zombach in #2246
- Remove code analysis hack by @martincostello in #2245
- Remove build from CodeQL by @martincostello in #2249
- Fix 0162 warnings by @sukreshmanda in #2250
- Fix S3878 by @sukreshmanda in #2251
- Fix warnings for s6603 by @sukreshmanda in #2252
- Fix S4225 warnings of extension methods for object class by @sukreshmanda in #2253
- Fix Timeout's TimeoutGenerator documentation by @peter-csala in #2275
- Fix NuGet badges by @martincostello in #2279
- Put dotnet_diagnostic.CA1852.severity = warning into effect. Fix the resulting warnings by @Henr1k80 in #2289
- Suppress S3234 warnings by @martincostello in #2292
- Report last attempt as error if it would be handled by @peter-csala in #2291
- Fix ide0002 style rule by @gabidabet in #2302
- Update ResilienceProperties to correctly handle null values by @iliar-turdushev in #2300
- Fail if signing fails by @martincostello in #2304
- Downgrade sign tool by @martincostello in #2305
- Fix milestone closure by @martincostello in #2106
- Fix potential github action smells by @ceddy4395 in #2097
- Bump actionlint to 1.7.0 by @martincostello in #2107
- Drop net7.0 from test projects by @martincostello in #2108
- Fix S3872 warning by @iamdmitrij in #2111
- Fix IDE1006 warning by @iamdmitrij in #2112
- [Docs] Fix pollydocs menu by @peter-csala in #2136
- Issue comment automation by @martincostello in #2137
- Fix package validation by @martincostello in #2138
- Removing Warnings SA1108 and SA1118 from NoWarn list by @henriqueholtz in #2148
- Fix retry delay going negative for large retries with exponential delays by @martincostello in #2164
- Bump cake tools by @martincostello in #2165
- Handle nested inner exceptions by @martincostello in #2166
- Remove async void usage by @martincostello in #2013
- [Docs] Add cheat sheet for outcome chaos strategy by @peter-csala in #1984
- Fix SA1515/SA1612/S2681 by @baranyaimate in #2018
- Fix S3800/CA1821/S2955 by @baranyaimate in #2020
- Document outcome strategy anti-patterns by @vany0114 in #1994
- [Docs] Add cheat sheet for latency chaos by @peter-csala in #2030
- [Docs] Add cheat sheet for behavior chaos by @peter-csala in #2031
- Remove DiagnosticSource reference from Extensions for NET 6.0 and later by @lahma in #2033
- Bump actionlint to 1.6.27 by @martincostello in #2040
- Split docs build and publish by @martincostello in #2054
- Port fixes from .NET 9 testing by @martincostello in #2056
- Add sponsorship to README by @martincostello in #2059
- Add F# and VB.NET samples by @martincostello in #2046
- Fix ToC by @martincostello in #2063
- Allow adding a resilience strategy without explicit options by @martintmk in #2068
- [Docs] Unify strategy descriptions and add Telemetry sections by @peter-csala in #2060
- Add unit to execution time in telemetry events by @peter-csala in #2069
- Release automation by @martincostello in #2062
- [Docs] Add telemetry section to chaos strategies documentation pages by @peter-csala in #2071
- Fix CI for macOS 14 by @martincostello in #2079
- Fix SA1618 by documenting typeparams by @iamdmitrij in #2078
- Add package tools to manifest by @martincostello in #2084
- Fix IDE0011 warning by @iamdmitrij in #2085
- Fix S3253/S6605/SA1625/S103 warnings by @iamdmitrij in #2086
- Add CI timeouts by @martincostello in #2088
- Fix CA1000/S4023/S3442/S107/SA1402/SA1649 warnings by @iamdmitrij in #2089
- Fix SA1615/SA1623 warnings by @iamdmitrij in #2091
- Allow changing the severity of resilience events by @martintmk in #2072
- Fix typos by @martincostello in #2099
- [Bug] Fix chaos outcome exception handling by @peter-csala in #2101
- Nullability fixes for chaos outcome strategy by @martintmk in #1982
- Add example for chaos engineering by @martintmk in #1956
- Fix CA1806 by @gintsk in #1963
- Fix SA1129 by @gintsk in #1964
- Fix S3717 by @gintsk in #1965
- Add link to chaos engineering blog post by @martintmk in #1966
- Fix SA1501/IDE0055 by @baranyaimate in #1957
- [Docs] Add cheat sheet for fault chaos by @peter-csala in #1972
- Improve unit test coverage in
Polly.Specs
by @gintsk in #1974 - [Docs] Fix antipattern sample code by @peter-csala in #1976
- [Docs] Improve diagrams for hedging cancellation by @martintmk in #1975
- Add short description to each package by @martintmk in #1977
- Update NuGet tools by @martincostello in #1992
- Move simmy from unshipped to shipped by @peter-csala in #1993
- Fix issue #1979: an unhandled exception in half open state must transition to closed and not prevent leaving half open state forever by @DominicUllmann in #1991
- Update samples to .NET 8 by @martincostello in #2004
- [Docs] Fix calculation of exponential delay in flow chart by @janher in #2005
- Use collection expressions in Cake script by @martincostello in #2006
- Xml comments cleanup and improvement by @gintsk in #2007
- Xml documentation cleanup by @gintsk in #2008
- Update CHANGELOG for 8.2.1 by @martincostello in #1882
- Add support for keyed services by @martintmk in #1881
- Run benchmarks on .NET 8 by @martintmk in #1887
- Decrease the minimum allowed timeout by @martintmk in #1888
- Fix typo by @martincostello in #1897
- BreakDurationGeneratorArguments now includes half-open attempts by @martintmk in #1898
- Do not encourage returning the same instance from chaos strategies by @martintmk in #1899
- Do not encourage re-throwing the same exception instance by @martintmk in #1900
- Simmy docs by @vany0114 in #1883
- Add banner to chaos docs by @peter-csala in #1910
- Introduce
FaultGenerator
andOutcomeGenerator<T>
by @martintmk in #1911 - Use new chaos APIs to simplify the usage examples by @martintmk in #1912
- Simmy API review Part 1 by @peter-csala in #1909
- Simmy API review Part 2 - Prefer Chaos over Monkey by @peter-csala in #1913
- Update docs and cleanup some chaos API by @martintmk in #1914
- Simmy API review Part 4 - Rename BehaviorAction to BehaviorGenerator by @peter-csala in #1917
- Simmy API review Part 3 - Set enabled to true by default by @peter-csala in #1916
- Add clarification about property precedence by @peter-csala in #1918
- Replace textual descriptions of next delay calculation with diagrams by @peter-csala in #1922
- Apply chaos selectively by @martintmk in #1923
- Got rid of IDE0044 warnings by @baranyaimate in #1928
- Integrating chaos pipeline by @martintmk in #1927
- Got rid of IDE0066, IDE0250, IDE0063 warnings by @baranyaimate in #1930
- Fix PipelineNameComparer example in documentation by @jwagon in #1931
- Chaos API review pass by @martintmk in #1934
- Fix S6608/IDE1006/SA1414/CA1508 warnings in Polly.Specs project by @baranyaimate in #1935
- Fix SA1602/S6608/S4144 warnings by @gintsk in #1936
- Fix SA1113/CA1200/SA1805/SA1629/SA1407/SA1127 warnings by @baranyaimate in #1938
- Resources about chaos engineering by @martintmk in #1937
- Fix SA1111/SA1513/SA1121/SA1110 by @baranyaimate in #1939
- Fix SA1203/S109 by @baranyaimate in #1948
- Fix CA2000/stalled suppressions by @gintsk in #1947
- Tidy-up Polly.Specs by @martincostello in #1950
- Fix S4056 by @gintsk in #1952
- Simmy major differences section by @martintmk in #1951
- Bump version to 8.2.1 by @martincostello in #1798
- Publish AoT for test on macOS by @martincostello in #1800
- Remove SourceLink package by @martincostello in #1809
- Pre-allocate list size in tests by @martincostello in #1810
- Update tools by @martincostello in #1811
- Add NuGet package descriptions by @martincostello in #1813
- Bump dotnet-stryker to 3.12.0 by @martincostello in #1822
- Add a test that demonstrates how to track the states of circuit breaker by @martintmk in #1829
- Update NuGet packages by @martincostello in #1849
- Fix BreakDurationGenerator not being used by @martincostello in #1852
- Fix retry overflow with max delay by @Chr15P13t in #1868
- Bump xunit by @martincostello in #1873
- Fix stack trace growing for opened circuit breaker by @martintmk in #1878
- Run workflows on release branches by @martincostello in #1879
- Prepare for 8.2.0 release by @martincostello in #1758
- [Docs] Add circuit breaker to the migration guide by @peter-csala in #1764
- [Docs] Improve timeout docs by @martintmk in #1767
- [Docs] Minor cleanups by @peter-csala in #1768
- [Docs] Revise migration guide 3/3 by @peter-csala in #1775
- Calculated break duration for Circuit breaker by @atawLee in #1776
- Disable GitHub publishing by @martincostello in #1781
- [Docs] Small cleanup and improvements by @martintmk in #1782
- Add test that verifies overriding by using
ConfigureTelemetry
by @martintmk in #1787 - Remove GitHub Packages publishing by @martincostello in #1789
- Allow concurrent PR docs builds by @martincostello in #1795
- Update to .NET 8 SDK by @martincostello in #1738
- Add support for .NET 8 by @martintmk in #1144
- Only show stable versions in README by @martincostello in #1649
- Update samples to stable release by @martincostello in #1647
- v8 Release - commit and validate public API by @martintmk in #1632
- Fix documentation comment for CB's MinimumThroughput by @peter-csala in #1654
- Docs tweaks by @martincostello in #1655
- Add Github repo link to the docs navbar by @adamnova in #1666
- Add markdownlint by @martincostello in #1664
- [Docs] Mocking of
ResiliencePipelineProvider
by @martintmk in #1662 - Enable search for docs by @martincostello in #1669
- [Docs] Add notes to use Polly.RateLimiting package by @peter-csala in #1672
- Docs: Include info about numerical type used in metrics in telemetry.md by @agehrke in #1673
- [Docs] Add event names to telemetry by @martintmk in #1674
- [Docs] Expand fault handling docs by @martintmk in #1675
- Add spell checker by @martincostello in #1667
- [Docs] Improve telemetry docs by @martintmk in #1681
- [Docs] Improve registry docs by @martintmk in #1684
- [Docs] Fix link to ResiliencePipelineBuilder by @martintmk in #1685
- Group xunit updates by @martincostello in #1695
- Use GitHub Issue template forms by @martincostello in #1676
- [Docs] Fallback after retries by @martintmk in #1698
- [Docs] Add sequence diagrams to timeout strategy by @peter-csala in #1699
- Turn off var preferences by @cmeyertons in #1700
- [Docs] Use docfx to dynamically render mermaid diagrams by @peter-csala in #1701
- #1687 - Make ResilienceContextPool settable via DI by @cmeyertons in #1693
- Update to cancel downstream operation in TimeoutStrategy.Pessimistic by @lor1mp in #1697
- [Docs] Add sequence diagrams to fallback, retry, and rate limiter by @peter-csala in #1702
- [Docs] Add diagrams to circuit breaker by @peter-csala in #1704
- [Docs] Remove theme overwrites from mermaid diagrams by @peter-csala in #1705
- Add link to retries blog by @martincostello in #1707
- Attempt to fix code-ql issues by @martintmk in #1708
- [Docs] Add sequence diagrams to hedging by @peter-csala in #1706
- [Docs] Improvements by @martintmk in #1712
- [Docs] Add diagrams to resilience pipeline by @peter-csala in #1714
- [Docs] Add diagram to action generator hedging by @peter-csala in #1713
- Simmy v8 feedback by @vany0114 in #1682
- [Docs] Update snippets' readme by @peter-csala in #1721
- [Docs] Update DocFx by @martintmk in #1722
- [Docs] Add docs for metering enrichment by @martintmk in #1724
- [Docs] Fix the API generation by @martintmk in #1725
- [Docs] Add sequence diagram to resilience context by @peter-csala in #1726
- [Docs] Fix hedging documentation about unhappy paths by @peter-csala in #1730
- [Docs] Minor fixes on pipeline registry by @peter-csala in #1733
- .NET 8 preparation by @martincostello in #1734
- Update NuGet tools by @martincostello in #1739
- Bump docfx by @martincostello in #1746
- Resolve IL2091 warnings by @martincostello in #1744
- Add component benchmark by@martincostello in #1743
- [Docs] Make quick start samples consistent by @peter-csala in #1735
- Prevent concurrent page builds by @martincostello in #1747
- Fix test by @martincostello in #1748
- Restore 100% mutations by @martincostello in #1750
- [Docs] Fix the policywrap sample by @peter-csala in #1728
- [Docs] Hedging context by @martintmk in #1749
- Run mutation tests on Windows instead of Linux by @martincostello in #1752
- Speed-up page builds by @martincostello in #1753
- Hedging strategy also deep-copies context for primary execution by @martintmk in #1754
- [Docs] Add diagram about hedging's context and callbacks by @peter-csala in #1751
- Resolve AOT compilation issues by @martincostello in #1737
- Updates for beta.2 by @martincostello in #1580
- Updates docs structure to prepare for Github Pages by @adamnova in #1581
- Re-run the benchmarks by @martintmk in #1586
- Update README.md by @joelhulen in #1595
- Adds gh-pages support by @martintmk in #1593
- Don't publish docs on PRs by @martintmk in #1596
- Fix some XML docs inaccuracies by @martintmk in #1592
- Try fix gh-pages domain reset by @martintmk in #1597
- Migration guide from v7 to v8 by @martintmk in #1598
- Simmy v8 by @vany0114 in #1459
- [Docs] Introduce Performance article by @martintmk in #1600
- Hide Simmy API for initial v8 release by @martintmk in #1601
- Add docs on how to use snippets by @martintmk in #1604
- [Docs] General extensibility and implementation of proactive strategies by @martintmk in #1602
- Align the telemetry tags with official guidelines by @martintmk in #1583
- Add anti-patterns to retry strategy by @peter-csala in #1603
- [Docs] Reactive strategies extensibility by @martintmk in #1606
- Add anti-patterns to fallback strategy by @peter-csala in #1607
- Avoid capturing where possible. by @IEvangelist in #1609
- Fix urls within readme extensions project by @wahid-moh in #1616
- [Docs] Testing by @martintmk in #1608
- [Docs] Add anti-patterns to circuit breaker documentation page by @peter-csala in #1621
- [Docs] Performance docs improvements by @martintmk in #1618
- [Docs] Polish the docs by @martintmk in #1619
- Introduce
RetryStrategyOptions.MaxDelay
property by @martintmk in #1620 - Use SHA256 for ChecksumAlgorithm and fix Binskim warning by @martintmk in #1623
- [Docs] Add an antipattern to the DI documentation page by @peter-csala in #1624
- Harden gh-pages workflow by @martincostello in #1628
- Fix typos by @martincostello in #1627
- Update README by @martincostello in #1626
- [Docs] Timeout policy migration by @martintmk in #1622
- Fix the behavior of
OnHedging
event by @martintmk in #1625 - Fix typo by @martincostello in #1629
- [Docs] Update some README links to point to pollydocs.org by @martintmk in #1634
- [Docs] Document Retry's
MaxDelay
property by @martintmk in #1631 - Bump actionlint by @martincostello in #1637
- Documentation updates by @martincostello in #1630
- [Docs] Add safe execution section to the migration guide by @peter-csala in #1638
- Add OSSF scorecard badge by @martincostello in #1642
- Bump xunit.runner.console by @martincostello in #1643
- Update CHANGELOG for 8.0.0 by @martincostello in #1645
- Update docs source by @martincostello in #1641
- Stabilize
AddHedging_IntegrationTest
test by @martintmk in #1644 - Release v8 docs by @martintmk in #1599
- Add banned API analyzers and fix time zone issue by @martincostello and @IEvangelist in #1651
- Updates for beta.1 by @martincostello in #1531
- Drop unused internal property by @martintmk in #1532
- Update .NET tools by @martincostello in #1533
- Cleanup the Polly.Core README.md by @martintmk in #1539
- Drop table of contents in README.md by @martintmk in #1541
- Add actionlint by @martincostello in #1542
- Cleanup samples by @martintmk in #1544
- Move code from markdown to snippets by @martintmk in #1540
- Trim the main README.md by @martintmk in #1550
- Use proactive term instead of non-reactive by @martintmk in #1552
- Add the v8 README.md by @martintmk in #1548
- Use token to clone repository by @martincostello in #1554
- [Docs] Add docs for individual resilience strategies by @martintmk in #1553
- [Docs] Fix v8 link by @martintmk in #1557
- Fix Name and InstanceName not being set for reloadable pipelines by @martintmk in #1555
- [Docs] Telemetry page by @martintmk in #1556
- Fix the link to v8 docs (second attempt) by @martintmk in #1559
- Improve the samples by @martintmk in #1562
- [Docs] Hedging and rate limiter strategy docs by @martintmk in #1560
- [Docs] Dependency injection by @martintmk in #1564
- [Docs] Improve landing page to the docs by @martintmk in #1566
- Drop the build target for net7.0 by @martintmk in #1572
- Drop redundant System.Diagnostics.DiagnosticSource package reference by @martintmk in #1573
- Improve the docs and behavior around infinite retries by @martintmk in #1574
- [Docs] Resilience pipeline registry by @martintmk in #1575
- [Docs] Consolidate headings by @martintmk in #1576
- Delay pipeline disposal when still in use by @martintmk in #1579
- Updates for alpha.9 by @martincostello in #1526
- Finalize the API review by @martintmk in #1528
- Disposing pipeline should not dispose external inner pipeline by @martintmk in #1529
- Clean duplications around disposing the pipelines by @martintmk in #1530
- Updates for alpha.8 by @martincostello in #1465
- Fix unstable build by @martintmk in #1466
- Improve samples by @martintmk in #1467
- Specify DebuggerDisplay for ReactiveResilienceStrategyBridge by @martintmk in #1468
- Drop the
Extensions
fromPolly.Extensions
namespace by @martintmk in #1469 - Remove Moq by @martincostello in #1472
- Add new metering tests to cover uncovered lines by @martintmk in #1474
- Default names for individual resilience strategies by @martintmk in #1475
- Introduce
NonReactiveResilienceStrategy
by @martintmk in #1476 - Drop
TelemetryResilienceStrategy
by @martintmk in #1482 - API Review feedback (1) by @martintmk in #1484
- Rename ResilienceStrategy to ResiliencePipeline by @martintmk in #1483
- API Review Feedback (2) by @martintmk in #1485
- Introduce TelemetryListener by @martintmk in #1486
- Improve documentation by @martintmk in #1487
- Fix metering tests by @martintmk in #1488
- Hide validation APIs by @martintmk in #1490
- Logging improvements by @martintmk in #1489
- Hide/drop some unused APIs by @martintmk in #1491
- Cleanup internals by @martintmk in #1492
- ResilienceContextPool improvements by @martintmk in #1493
- Hide IsSynchronous property by @martintmk in #1494
- Drop unused ResiliencePipelineRegistry APIs by @martintmk in #1495
ResiliencePipelineRegistry
is now disposable by @martintmk in #1496- Move pipeline-related internals into
Pipeline
folder by @martintmk in #1497 - Update benchmarks by @martintmk in #1503
- Minor ResiliencePipelineRegistry cleanup of internals by @martintmk in #1505
- API Review Feedback by @martintmk in #1506
- Minor API cleanup by @martintmk in #1508
- Clenaup rate limiter API by @martintmk in #1509
- Cleanup ResiliencePipelineRegistry internals by @martintmk in #1510
- Allow to dispose linked resources on pipeline disposal by @martintmk in #1511
- Simplify and enhance the pipeline reloads by @martintmk in #1512
- Drop
OutcomeArguments
struct by @martintmk in #1513 - API Review Feedback by @martintmk in #1520
- Got rid of some warnings in the Polly project by @IgorIgorevich94 in #1514
- API Review Feedback by @martintmk in #1521
- Cleanup Outcome internals and drop unused hedging and fallback APIs by @martintmk in #1523
- Improve debugging experience for
ResilienceProperties
by @martintmk in #1524 - Protect against retry delay overflows by @martintmk in #1522
- Fix DelayAsync extension by @martintmk in #1525
- Updates for 8.0.0-alpha.7 by @martincostello in #1433
- Improve logging messages by @martintmk in #1436
- Rename
BuilderName
toName
by @martintmk in #1437 - Do not record null tags to meter by @martintmk in #1438
- Fix telemetry test failures by @martintmk in #1439
- Simplify OutcomeResilienceStrategy by @martintmk in #1440
- Drop simple circuit breaker by @martintmk in #1444
- Allow jitter for all backoff types by @martintmk in #1445
- Rename
Attempt
toAttemptNumber
by @martintmk in #1447 - Hide
CircuitBreakerStateProvider.LastHandledOutcome
by @martintmk in #1446 - Rename
ResilienceStrategyBuilder
toCompositeStrategyBuilder
by @martintmk in #1448 - Added
readonly
modifier to private fields which are never changed by @Lehonti in #1451 - Reduced nesting levels through block-scoped
using
s and the inversion of anif
block. by @Lehonti in #1453 - Simplify file names by @martintmk in #1455
- Improve
MultipleStrategiesBenchmark
by @martintmk in #1457 - Elaborate about synchronous vs asynchronous executions by @martintmk in #1456
- Fix some typos in XML docs by @martintmk in #1458
- Make
ReactiveResilienceStrategy
public by @martintmk in #1460 - Make the
ReactiveResilienceStrategy
type-safe by @martintmk in #1462 - Use
StrategyHelper
for safe executions and drop redundant methods by @martintmk in #1463 - Drop unnecessary allocation in circuit breaker by @martintmk in #1464
- Introduce ResilienceStrategyBuilder.Validator by @martintmk in #1412
- Update docs by @martintmk in #1413
- Annotate the library with trimming attributes by @martintmk in #1414
- Update trimming justifications by @martincostello in #1415
- Fix condition by @martincostello in #1416
- API Review Feedback (1) by @martintmk in #1420
- Introduce ResilienceContextPool (ApiReview) by @martintmk in #1421
- Convert records to classes by @martintmk in #1422
- Rename ExecuteCoreAsync to ExecuteCore by @martintmk in #1424
- Benchmark for strategy creation by @martintmk in #1426
- Fix README.md example syntax errors by @Sensational-Code in #1427
- Improve usability of ResilienceStrategy<T> by @martintmk in #1428
- Cleanup OutcomeResilienceStrategy by @martintmk in #1430
- Drop the ResilienceStrategyBuilder.IsGenericBuilder property by @martintmk in #1431
- Allow isolate CircuitBreakerManualControl using constructor by @martintmk in #1432
- Update docs by @martincostello in #1382
- Add support for
PartitionedRateLimiter
by @martintmk in #1383 - Fix debugger proxies by @martintmk in #1384
- Allow adding generic strategies to generic builder by @martintmk in #1386
- Add new issue that demonstrates how to use PartitionedRateLimiter by @martintmk in #1385
- Introduce
TelemetryOptions.OnTelemetryEvent
by @martintmk in #1387 ResilienceStrategyRegistry
API improvements by @martintmk in #1388- Simplify condition by @martincostello in #1391
- Introduce
ResilienceStrategyBuilder.InstanceName
and use it in telemetry by @martintmk in #1392 - Introduce
Polly.Testing
package by @martintmk in #1394 - Kill mutant by @martintmk in #1395
- Fix unstable test by @martintmk in #1396
- Rename AddResilienceStrategy to AddResilienceStrategyRegistry by @martintmk in #1397
- Update README.md for Polly.Extensions with telemetry info by @martintmk in #1401
- Kill mutant by @martintmk in #1407
- Assertion failed when running tests in Visual Studio by @martintmk in #1408
- Include PublicApiAnalyzers by @martintmk in #1400
- Kill mutant by @martintmk in #1409
- Demonstrate how to create dynamic strategies with complex keys by @martintmk in #1366
- Skip mutation tests for tagged builds by @martincostello in #1354
- Update CHANGELOG by @martincostello in #1353
- Drop TimeProvider.Delay by @martintmk in #1355
- Fix race conditions in tests by @martintmk in #1358
- Simplify the logging by @martintmk in #1359
- Prepare for .NET 8 by @martincostello in #1360
- Introduce ResilienceEventSeverity by @martintmk in #1361
- Upload coverage reports by @martincostello in #1363
- Kill mutant by @martintmk in #1368
- Accelerate build in VS by @martintmk in #1369
- Simplify handling of reloads by @martintmk in #1374
- Allow reusing CircuitBreakerManualControl across multiple CBs by @martintmk in #1375
- PR and issue automation by @martincostello in #1370
- Exclude some labels from stale by @martincostello in #1378
- Debugger proxies for resilience strategies by @martintmk in #1379
- Introduce
ResilienceContext.OperationKey
by @martintmk in #1380
- Rename FakeTimeProvider by @martincostello in #1349
- Adopt FakeTimeProvider by @martincostello in #1350
- Drop custom validation attributes by @martintmk in #1351
- Drop TimeProvider.CancelAfter by @martintmk in #1352
- Update README.md with v8 Alpha v2 release announcement by @joelhulen in #1337
- Adopt Alpha 2 in samples by @martintmk in #1338
- Add net6.0 and net7.0 to Polly by @martincostello in #1336
- Sync TimeProvider and cleanup by @martintmk in #1339
- Fix hedging being cancelled too early by @martintmk in #1340
- Fix logging of execution attempt by @martintmk in #1341
- Bump github/codeql-action from 2.20.0 to 2.20.1 by @dependabot in #1344
- Bump martincostello/update-dotnet-sdk from 2.2.2 to 2.2.3 by @dependabot in #1345
- Bump StyleCop.Analyzers from 1.2.0-beta.435 to 1.2.0-beta.507 by @dependabot in #1342
- Bump SonarAnalyzer.CSharp from 9.3.0.71466 to 9.4.0.72892 by @dependabot in #1343
- Expose Randomizer property and use it in retry strategy by @martintmk in #1346
- Drop redundant validation of resilience strategy options by @martintmk in #1299
- Add NuGet configuration file by @martincostello in #1305
- Log unhealthy executions with warning level by @martintmk in #1306
- Add hedging to package tags by @martincostello in #1307
- Bump github/codeql-action from 2.3.6 to 2.20.0 by @dependabot in #1310
- Bump actions/checkout from 3.5.2 to 3.5.3 by @dependabot in #1309
- Introduce
samples
folder by @martintmk in #1295 - Update telemetry benchmark by @martintmk in #1311
- Enhance
OnHedgingArguments
by @martintmk in #1314 - The options that handle outcomes now have sensible defaults by @martintmk in #1316
- Update README.md with v8 alpha announcement by @joelhulen in #1317
- The deafult RateLimiterStrategyOptions instance is now valid by @martintmk in #1315
- Rename
TelemetryResilienceStrategyOptions
toTelemetryOptions
by @martintmk in #1318 - Alpha fixes and improvements by @martintmk in #1319
- Fix OnHedging not being called by @martintmk in #1320
- Reduce allocations in telemetry by @martintmk in #1321
- Add new issue test that demonstrates library scenario by @martintmk in #1322
- Fix relative links by @martincostello in #1325
- API feedback by @martintmk in #1327
- Introduce ExecutionAttemptArguments by @martintmk in #1326
- Introduce OutcomeResilienceStrategy and drop some internals by @martintmk in #1330
- Introduce Outcome by @martintmk in #1331
- Validate NuGet package signatures by @martincostello in #1335
- Allow implicit conversion of
PredicateBuilder
to delegates by @martintmk in #1332
- The first public preview of Polly v8 with our new high-performance core API and extensions. Feel free to check out the samples to see the new and improved Polly V8 in action.
- The first release of the new NuGet packages:
Polly.Core
- This package contains the new Polly V8 API.Polly.Extensions
- This package is designed to integrate Polly with dependency injection and enable telemetry.Polly.RateLimiting
- This package provides an integration between Polly andSystem.Threading.RateLimiting
.
Thanks to:
- @adamnova
- @andrey-noskov
- @joelhulen
- @juraj-blazek
- @geeknoid
- @laura-mi
- @martincostello
- @martintmk
- @SimonCropp
- @tekian
- @terrajobst
- Fixed an incorrect exception argument - Thanks to @FoxTes
- Upgrade FluentAssertions - Thanks to @dotnetspark
- Upgrade Cake - Thanks to @eugeneogongo
- Fixed possible NullReferenceException - Thanks to @FoxTes
- Migrate build to GitHub Actions - Thanks to @martincostello
- Authenticode sign the assembly and NuGet package - Thanks to @martincostello and the .NET Foundation
- Add RateLimit policy - Thanks to @reisenberger
- Various codebase health updates - Thanks to @SimonCropp
- Add benchmarks project - Thanks to @martincostello
- Fix broken README image - Thanks to @GitHubPang
- Recursively search all
AggregateException
inner exceptions for predicate matches when usingHandleInner()
(#818) - Thanks to @sideproject - Polly now builds deterministically - Thanks to @304NotModified
- Bug fix: the
timeoutStrategy
parameter was not being used by theTimeoutAsync(Func<TimeSpan>, TimeoutStrategy, Func<Context, TimeSpan, Task, Task>)
method - Thanks to @martincostello - Bug fix: the solution can now be built with the .NET 5.0 SDK - Thanks to @martincostello
- Upgrade SourceLink to RTM v1 (fixes building from source for latest .NET Core 3.1.x)
- Bug fix: rare circuit-breaker race condition causing NullReferenceException when circuit throws BrokenCircuitException.
- Add test target for netcoreapp3.0.
- Extend PolicyRegistry with concurrent method support, TryAdd, TryRemove, TryUpdate, GetOrAdd, AddOrUpdate; new interface IConcurrentPolicyRegistry
- Improve .NET Framework support: Add explicit targets for .NET Framework 4.6.1 and 4.7.2.
- TimeoutPolicy: if timeout occurs while a user exception is being marshalled (edge case race condition), do not mask user exception (fix issue 620)
- Enhance debugging/stacktrace experience for some contexts: Include pdb symbols in package again.
- Bug fix: ensure async retry policies honor continueOnCapturedContext setting (affected v7.1.0 only).
- Remove deprecated cake add-in from build
- Add SourceLink debugger support.
- Bug fix: PolicyRegistry with .NET Core services.AddPolicyRegistry() overload (affected Polly v7.0.1-3 only)
- Rationalise solution layout
- Add explicit .NET framework 4.6.2 and 4.7.2 test runs
- Bug fix for AdvancedCircuitBreakerAsync<TResult> (issue affecting v7.0.1-2 only)
- Bug fix for PolicyRegistry (issue affecting v7.0.1 only)
- Clarify separation of sync and async policies (breaking change)
- Enable extensibility by custom policies hosted external to Polly
- Enable collection initialization syntax for PolicyRegistry
- Enable cache policies to cache default(TResult) (breaking change)
- Restore Exception binary serialization for .Net Standard 2.0
- Bug Fix: Async continuation control for async executions (issue 540, affected only v6.1.1)
- Bug Fix: Context.PolicyKey behaviour in PolicyWrap (issue 510)
- Bug Fix: Context.PolicyKey behaviour in PolicyWrap (issue 463)
- Bug Fix: CachePolicy behaviour with non-nullable types (issues 472, 475)
- Enhancement: WaitAnd/RetryForever overloads where onRetry takes the retry number as a parameter (issue 451)
- Enhancement: Overloads where onTimeout takes thrown exception as a parameter (issue 338)
- Enhancement: Improved cache error message (issue 455)
- Version 6 RTM, for integration to ASP.NET Core 2.1 IHttpClientFactory
- Publish as strong-named package only (discontinue non-strong-named versions)
- Add .NetStandard 2.0 tfm
- Provide .NET4.5 support via .NetStandard 1.1 tfm
- Discontinue .NET4.0 support
- Remove methods marked as deprecated in v5.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.
- 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
- Minor cache fixes
- Add ability to calculate cache Ttl based on item to cache
- Allow user-created custom policies
- Extend PolicyWrap syntax with interfaces
- 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 configure policies expressed as interfaces
- Bug fix: set context keys for generic execute methods with PolicyWrap
- Bug fix: generic TResult method with non-generic fallback policy
- Performance improvements
- Multiple build speed improvements
- Bug fix: non-generic CachePolicy with PolicyWrap
- Add Cache interfaces
- 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.
- Make ISyncPolicy<TResult> public
- (Upgrade solution to msbuild15)
- Fix ExecuteAndCapture() usage with PolicyWrap
- Allow Fallback delegates to take execution Context
- Provide IReadOnlyPolicyRegistry interface
- Add PolicyRegistry for storing and retrieving policies.
- Add interfaces by policy type and execution type.
- Change .NetStandard minimum support to NetStandard1.1.
- Allow different parts of a policy execution to exchange data via a mutable Context travelling with each execution.
- 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 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.
- Minor behavioural change: For a circuit which has not handled any faults since initialisation or last reset, make
LastException
property return null rather than a fake exception. - Add NoOpPolicy: NoOpPolicy executes delegates without intervention; for eg stubbing out Polly in unit testing.
- Fix Microsoft.Bcl and Nito.AsyncEx dependencies for Polly.Net40Async.
- 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).
- .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 is supported via .NETStandard1.0 target, going forward.
- Mark Polly.dll as CLSCompliant.
- Tidy build around GitVersionTask and ReferenceGenerator.
- Update FluentAssertions dependency.
- Added Polly.Net40Async specs project.
- Fix issue 179: Make Net4.0 async implementation for Bulkhead truly async.
- Add .NET Standard 1.0 project and target.
A major release, adding significant new resilience policies:
- Timeout policy: allows timing out any execution. Thanks to @reisenberger.
- Bulkhead isolation policy: limits the resources consumable by governed actions, such that a faulting channel cannot cause cascading failures. Thanks to @reisenberger and contributions from @brunolauze.
- Fallback policy: provides for a fallback execution or value, in case of overall failure. Thanks to @reisenberger
- PolicyWrap: allows flexibly combining Policy instances of any type, to form an overall resilience strategy. Thanks to @reisenberger
Other changes include:
- Add PolicyKeys and context to all policy executions, for logging and to support later introduction of policy events and metrics. Thanks to @reisenberger
- Add CancellationToken support to synchronous executions. Thanks to @brunolauze and @reisenberger
- Add some missing ExecuteAndCapture/Async overloads. Thanks to @reisenberger
- 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
- Added ability for policies to handle returned results. Optimised circuit-breaker hot path. Fixed circuit-breaker threshold bug. Thanks to @reisenberger, @christopherbahr and @Finity respectively.
- 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 DLL references are not included within each of the framework targets. Thanks to @reisenberger and @joelhulen
- 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
- Remove time-limit on CircuitBreaker state-change delegates - Thanks to @reisenberger
- 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
- 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 flow async action execution on the captured context - Thanks to @reisenberger
- Fixes excess line ending issues
- 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
- Policies with a retry count of zero are now allowed - Thanks to @nelsonghezzi
- Add .NET Core support
- Fix PCL implementation of
SystemClock.Reset
- Added ability to capture the results of executing a policy via
ExecuteAndCapture
- Thanks to @ThomasMentzel
- Added extra
NotOnCapturedContext
call to prevent potential deadlocks when blocking on asynchronous calls - Thanks to Hacko
- Replaced non-blocking sleep implementation with a blocking one for PCL
- Added Async Support (PCL)
- PCL Profile updated from Profile78 -> Profile 259
- Added missing WaitAndRetryAsync overload
- 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
- The
Polly
NuGet package is now no longer strongly named. The strongly named NuGet package is nowPolly-Signed
(Issue #5)
- Added additional overloads to Retry
- Allow arbitrary data to be passed to policy execution (Issue #1)