What's the correct way to modify the Duration Break on Polly? I know in the documentation they mention implementing (PolicyRegistry). Is there any example of this? I was implementing Polly CircuitBreaker in one WinService.
Polly CircuitBreaker - Dynamic Duration of Break
991 Views Asked by Felipe Alves de Lima At
1
There are 1 best solutions below
Related Questions in C#
- 1MiB = 1024KiB = 2^10. Nonetheless, why not use just 1000 byte instead 1024 to calculate size?
- What is the simplest Turing complete CPU instruction set which can execute code from ROM?
- How to get CPU utilization in % in terminal (mac)
- Avoiding CPU Contention
- Lots of cache miss, Sparse matrix multiplication
- CPU new features enabled in Linux kernel
- Are correct branch predictions free?
- NUMA support on which CPU? What are the current server configuration of this kind of CPU?
- How to deal with virtual address when trying to get memory access pattern statistics?
- On x86, does enabling paging cause an "unconditional jump" (since EIP is now a virtual address)?
Related Questions in POLLY
- 1MiB = 1024KiB = 2^10. Nonetheless, why not use just 1000 byte instead 1024 to calculate size?
- What is the simplest Turing complete CPU instruction set which can execute code from ROM?
- How to get CPU utilization in % in terminal (mac)
- Avoiding CPU Contention
- Lots of cache miss, Sparse matrix multiplication
- CPU new features enabled in Linux kernel
- Are correct branch predictions free?
- NUMA support on which CPU? What are the current server configuration of this kind of CPU?
- How to deal with virtual address when trying to get memory access pattern statistics?
- On x86, does enabling paging cause an "unconditional jump" (since EIP is now a virtual address)?
Related Questions in CIRCUIT-BREAKER
- 1MiB = 1024KiB = 2^10. Nonetheless, why not use just 1000 byte instead 1024 to calculate size?
- What is the simplest Turing complete CPU instruction set which can execute code from ROM?
- How to get CPU utilization in % in terminal (mac)
- Avoiding CPU Contention
- Lots of cache miss, Sparse matrix multiplication
- CPU new features enabled in Linux kernel
- Are correct branch predictions free?
- NUMA support on which CPU? What are the current server configuration of this kind of CPU?
- How to deal with virtual address when trying to get memory access pattern statistics?
- On x86, does enabling paging cause an "unconditional jump" (since EIP is now a virtual address)?
Related Questions in POLICY-REGISTRY
- 1MiB = 1024KiB = 2^10. Nonetheless, why not use just 1000 byte instead 1024 to calculate size?
- What is the simplest Turing complete CPU instruction set which can execute code from ROM?
- How to get CPU utilization in % in terminal (mac)
- Avoiding CPU Contention
- Lots of cache miss, Sparse matrix multiplication
- CPU new features enabled in Linux kernel
- Are correct branch predictions free?
- NUMA support on which CPU? What are the current server configuration of this kind of CPU?
- How to deal with virtual address when trying to get memory access pattern statistics?
- On x86, does enabling paging cause an "unconditional jump" (since EIP is now a virtual address)?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Circuit Breaker was not designed to use different sleep duration whenever it breaks.
In case of Retry you have the ability to provide a function, called
sleepDurationProvider
which is called by the policy to determine the actual sleep duration before issuing the next attempt.So, in short by design it is not supported. I will show you a workaround, but I do not recommend to use it. I will provide a reasoning after the sample code.
For the sake of simplicity let's have the following method:
Let's define a helper method which increases the time period (>> sleep duration) each and every time whenever it is called:
sleepDurationProvider
.Now it's time to define our Circuit Breaker policy:
GetSleepDuration
Probe
call the CB will breakdurationOfBreak
to zero because we will wait inside theonBreak
<< the workaroundIn order to ease our testing let's define a retry policy:
Probe
's exceptionLet's wire up the policies and run the test:
The output will be:
Probe
has been called and failedOpen
toBroken
onBreak
has been called, which block the execution for 1 secondPolicyWrap
escalates the problem to RetryBroken
toHal-Open
Probe
has been called and failedThe biggest problem with this solution that it is blocking. Unfortunately there is no async version of
onBreak
. (Retry does haveonRetryAsync
, in which you could useTask.Delay
instead ofThread.Sleep
)The second problem is that it relies on the current implementation. This solution won't work if for example the
onBreak
is executed on a different thread and the exception is thrown immediately.