awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
jhalterman avatar

jhalterman/failsafe

0
View on GitHub↗
4,307 stars·310 forks·Java·Apache-2.0·14 viewsfailsafe.dev↗

Failsafe

Failsafe is a JVM resilience library providing a collection of fault tolerance patterns for Java applications. It functions as an asynchronous execution wrapper that runs tasks in the background and returns futures to prevent thread blocking.

The library allows for the composition of resilience policies, enabling multiple patterns to be stacked into a sequential pipeline. It includes specific implementations for circuit breaking to prevent system overload, rate limiting to control traffic flow, and a framework for managing retries and fallbacks.

Capability areas cover traffic management through concurrency and rate limits, network request recovery for HTTP calls, and observability via event-driven monitoring of state changes and execution failures. The system also manages execution duration through timeouts to prevent processes from hanging indefinitely.

Features

  • Resilience and Fault Tolerance - Provides a comprehensive library of resilience and fault tolerance patterns for building stable JVM applications.
  • Fault Tolerance Patterns - Provides a comprehensive set of fault tolerance patterns including circuit breakers and retries for JVM applications.
  • Traffic Resilience Policies - Offers composable policies that apply circuit breakers, rate limiters, and retries to protect services from overload.
  • API Resilience - Improves the reliability of API communications by applying resilience policies like retries and circuit breakers.
  • Execution Time Limits - Terminates tasks after a specified duration to prevent processes from hanging indefinitely.
  • Token Bucket Implementations - Controls execution frequency using a token bucket algorithm with configurable refill rates.
  • Resilience Policy Pipelines - Implements a sequential pipeline for layering multiple resilience patterns like retries and circuit breakers.
  • Asynchronous Future APIs - Provides non-blocking handles for tracking the status of long-running asynchronous network operations.
  • Future-Based Result Handling - Provides mechanisms for managing and retrieving results from asynchronous operations using futures to prevent blocking.
  • Asynchronous Request Execution - Enables non-blocking network requests using awaitable patterns and futures.
  • Asynchronous Task Retries - Automatically re-attempts failed asynchronous operations using configurable delays and maximum attempt limits.
  • Asynchronous Operation Execution - Provides non-blocking execution of tasks using futures to handle asynchronous results without stalling the main thread.
  • Asynchronous Wrappers - Acts as a logic layer that runs fault-tolerant tasks in the background and returns futures to prevent thread blocking.
  • Cascading Failure Preventions - Prevents cascading failures by temporarily disabling execution when a failure threshold is met.
  • Circuit Breakers - Implements circuit breakers to prevent cascading failures by stopping execution when a service is detected as unhealthy.
  • Asynchronous Task Execution - Executes long-running operations asynchronously via durable handles and futures to prevent thread blocking.
  • Concurrent Execution Limiters - Constrains the number of simultaneously active asynchronous tasks using semaphore-like logic to prevent system overload.
  • Fault-Tolerant Fallbacks - Provides default or alternative results when a primary service call fails or times out.
  • Fallback Strategies - Provides alternative results when primary executions fail through a configurable fallback framework.
  • Fault Tolerance - Implements systems for managing failures and ensuring resilience in distributed JVM applications.
  • Rate Limiters - Restricts the number of operations per time period using leaky bucket or fixed window strategies to control traffic flow.
  • Retry Policies - Provides a framework for re-executing failed operations based on defined attempt limits and time intervals.
  • Circuit Breaking States - Implements a state-machine circuit breaker that transitions between open, closed, and half-open states based on failure thresholds.
  • Resilience Execution Wrappers - Wraps logic in reusable policy objects to apply fault tolerance patterns like retries and timeouts.
  • HTTP Resilience Wrappers - Composes resilience policies around HTTP calls to handle failures via automated retries or circuit breakers.
  • Rate Limiting Algorithms - Implements traffic regulation algorithms such as Token Bucket and Sliding Window.
  • Request Cancellations - Allows immediate termination of active network requests when the associated execution is cancelled.
  • Resilience State Listeners - Uses listener interfaces to provide observability into state changes, retries, and rate limit failures.
  • Concurrency Semaphores - Limits the number of simultaneous operations using semaphores to prevent system overload.
  • Request-Level Recovery - Implements recovery logic to automate the retry of failed HTTP calls and maintain consistency.
  • State Transition Event Triggers - Triggers callbacks when a circuit breaker transitions between open, closed, and half-open states.
  • Execution Queues - Holds execution attempts in a queue until a permit becomes available or a maximum wait time is reached.
  • Request Rate Limiting - Manages the frequency of outgoing requests to avoid overloading downstream services.
  • Execution Event Listeners - Notifies the system through listeners whenever an execution attempt through the rate limiter succeeds or fails.
  • Retry Metrics Monitoring - Provides observability tools for tracking the performance and frequency of retry attempts.
  • Data Structures and Memory - Lightweight library for handling failures.
  • Distributed Systems - Failure handling with retries and circuit breakers.

Star history

Star history chart for jhalterman/failsafeStar history chart for jhalterman/failsafe

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does jhalterman/failsafe do?

Failsafe is a JVM resilience library providing a collection of fault tolerance patterns for Java applications. It functions as an asynchronous execution wrapper that runs tasks in the background and returns futures to prevent thread blocking.

What are the main features of jhalterman/failsafe?

The main features of jhalterman/failsafe are: Resilience and Fault Tolerance, Fault Tolerance Patterns, Traffic Resilience Policies, API Resilience, Execution Time Limits, Token Bucket Implementations, Resilience Policy Pipelines, Asynchronous Future APIs.

Which projects share features with jhalterman/failsafe?

Projects with overlapping indexed features include: failsafe-lib/failsafe — Failsafe is a JVM fault tolerance library and resilience pattern framework. It provides a toolkit for implementing… afex/hystrix-go — This is a fault tolerance library for Go designed to prevent cascading failures by isolating unhealthy remote services… resilience4j/resilience4j — Resilience4j is a fault tolerance library for Java 8 applications designed to handle failures in distributed systems.… netflix/hystrix — Hystrix is a latency and fault tolerance library designed to prevent cascading failures in distributed systems. It… easegress-io/easegress — Easegress is a cloud-native traffic orchestration platform that functions as a multi-protocol API gateway and service… sindresorhus/p-queue — p-queue is a JavaScript promise queue and concurrent task scheduler designed to limit the number of active…

Projects sharing features with Failsafe

These projects share indexed features with Failsafe. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • failsafe-lib/failsafefailsafe-lib avatar

    failsafe-lib/failsafe

    4,307View on GitHub↗

    Failsafe is a JVM fault tolerance library and resilience pattern framework. It provides a toolkit for implementing circuit breakers, rate limiters, and other stability patterns within Java Virtual Machine applications to prevent cascading failures in distributed systems. The project is distinguished by its policy-based execution pipeline, which allows for the composition of multiple resilience patterns into a sequential flow. It features a state-machine circuit breaker to manage service recovery and a leaky-bucket rate limiter to control operation frequency. The library covers a broad range

    Javabulkheadcircuit-breakerfallback
    View on GitHub↗4,307
  • afex/hystrix-goafex avatar

    afex/hystrix-go

    4,418View on GitHub↗

    This is a fault tolerance library for Go designed to prevent cascading failures by isolating unhealthy remote services using the circuit breaker pattern. It serves as a resilience tool for managing request timeouts, defining fallback logic, and protecting remote systems from overloading. The library differentiates itself through the integration of a health metrics exporter that streams real-time performance and status data of remote connections to external monitoring tools. It combines this observability with a circuit breaker state machine that tracks success and failure rates to block calls

    Go
    View on GitHub↗4,418
  • resilience4j/resilience4jresilience4j avatar

    resilience4j/resilience4j

    10,689View on GitHub↗

    Resilience4j is a fault tolerance library for Java 8 applications designed to handle failures in distributed systems. It provides a comprehensive suite of resilience patterns including resource isolation, request throttling, retries, and timeouts. The project implements specific stability mechanisms such as circuit breakers to prevent cascading failures, bulkheads for system resource isolation, and rate limiters to cap execution rates. It also includes a retry framework with backoff policies and timeout enforcement to manage transient faults and maximum execution durations. Additional capabi

    Javabulkheadcircuitbreakermetrics
    View on GitHub↗10,689
  • netflix/hystrixNetflix avatar

    Netflix/Hystrix

    24,461View on GitHub↗

    Hystrix is a latency and fault tolerance library designed to prevent cascading failures in distributed systems. It functions as a circuit breaker implementation that monitors failure thresholds and opens circuits to isolate remote calls when downstream services degrade. The project distinguishes itself by providing multiple isolation mechanisms, utilizing dedicated thread pools and semaphores to ensure that latency in one dependency does not saturate the entire system. It also features a request collapsing and batching engine that groups concurrent calls into single executions to reduce the t

    Java
    View on GitHub↗24,461
Compare all 30 related projects→