failsafe
failsafe copied to clipboard
Fault tolerance and resilience patterns for the JVM
Hi folks, so I'm been using failsafe for java for quite a long time, now I'm moving to new project and decided to adopt it. But run into a problem...
The functions in `dev.failsafe.Functions` return a lambda which doesn't propagate the `toString()` to the wrapped object. This is an issue when an application wants to get `toString()` of the wrapped...
A suggestion about the method FailsafeExecutor#run(dev.failsafe.function.CheckedRunnable) and the similar get method. I think it would be nice if a ExecutionEvent variable would be available like in the method RetryPolicyBuilder#onFailedAttempt(...) There...
Say if I want to apply retry delay by increasing the retry interval exponentially for most cases, but for some specific exceptions like client error `429` I would like to...
I've hit on a few use cases for something like an error limiter that would allow through as many executions as possible so long as we stay below some recent...
I'm using `CircuitBreaker` in its [Standalone Usage](https://failsafe.dev/circuit-breaker/#standalone-usage). My `CircuitBreaker` is configured `withFailureRateThreshold(50, 2, Duration.ofSeconds(30))` to open when 50% of requests over a 30 second period fail. I'd like to be...
There's a subtle semantic difference between how `FailsafeException` is used synchronously vs. asynchronously. With synchronous `get`, exceptions thrown by Failsafe policies, i.e., those that extend `FailsafeException`, like `BulkheadFullException`, can be...
DelegatingScheduler uses an old singleton idiom with double volatile check and synchronized. Bill Pugh Singleton Implementation is better, shorter and uses (in some cases) less memory. Plus fields become "static...
This is the continuation of https://github.com/failsafe-lib/failsafe/issues/349 Here: https://github.com/magicprinc/failsafe/commits/leap_of_faith Final memory balance: -1 fat object `CompletableFuture` -1 lambda Callable in `DelegatingScheduler.schedule` -1 Callable-Runnable wrapper in `delayer().schedule` (Runnables are wrapped as Callables...