alibaba/Sentinel
48.9
Weak · 24 September 2026
74.3k
lines of production code
Java
with JavaScript
4
measurements over time
What this system is
Sentinel is a comprehensive traffic control and system protection framework for Java applications. It provides adapters for a wide range of frameworks, including Spring, Quarkus, and various RPC and HTTP clients, enabling flow control, degradation, and system load protection. The system supports distributed cluster mode for centralized rule management and offers dynamic rule updates via multiple data sources like Nacos, Redis, and Consul.
How it got here
2018 — cluster flow control and annotation support
84 changes.
This period focused on introducing cluster-based flow control and concurrency limiting, establishing the core abstractions and Netty-based transport for distributed rate limiting. Simultaneously, the project expanded its integration capabilities by adding the @SentinelResource annotation for method-level protection and supporting various frameworks like Dubbo, gRPC, and Spring. The work also included significant internal refactoring, such as the SPI-based slot chain builder and data source interfaces, to improve extensibility and performance.
2019 — gateway and reactive support
39 changes.
This period focused on expanding Sentinel's integration capabilities for modern web frameworks and distributed systems. Significant additions include adapters for Spring WebFlux, Spring Cloud Gateway, Zuul, and Apache Dubbo, alongside new cluster mode management features in the dashboard. The release also introduced extensibility hooks for custom metrics and support for dynamic rule sources like Consul and etcd.
2020–2026 — Adapter and logging expansion
31 changes.
This period focused on expanding Sentinel's integration capabilities by adding adapters for a wide range of frameworks, including Spring MVC, Quarkus, and various HTTP/RPC clients. The work also introduced asynchronous logging support and new flow control strategies, broadening the library's applicability across different Java EE and cloud-native environments.
Features
Add Apache HttpClient 5.x adapter for Sentinel flow control
A new adapter for Apache HttpClient 5.x has been added, enabling flow control for outgoing HTTP requests. The adapter intercepts requests using a custom \ExecChainHandler\ and applies Sentinel rules to resource names formatted as \METHOD:url\ (e.g., \GET:http://example.com/api\). Users can configure a custom resource name prefix, a resource extractor, and a fallback handler. The default extractor strips query parameters and fragments from the URL. This is a new capability for users integrating Sentinel with Apache HttpClient 5.x.
sentinel-adapter/sentinel-apache-httpclient5-adapter · high confidence
Add CPU usage monitoring to system rules
Users can now configure and monitor CPU usage as a system-level metric alongside existing controls like system load, QPS, and thread count. The \SystemRule\ and \SystemRuleManager\ introduce \highestCpuUsage\ as a configurable threshold (0-1), while \SystemStatusListener\ calculates and exposes the current process CPU usage for logging and alerting purposes.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/system · high confidence
Add Consul data source integration for Sentinel rules
Users can now store and dynamically update Sentinel flow rules in a Consul cluster. The new \ConsulDataSource\ connects to a Consul agent, reads initial configuration, and uses long-polling (blocking queries) to watch for rule changes and push updates to memory. The module includes a README with usage examples and unit tests to verify the integration.
sentinel-extension/sentinel-datasource-consul · high confidence
Add Envoy RLS token server with v3 API support and deployment samples
Introduces the Sentinel Envoy RLS token server, a new module that implements the Envoy Rate Limiting Service (RLS) gRPC interface to provide global rate limiting for Envoy. The implementation supports both the legacy v2 and the newer v3 API, with the v3 API being the primary focus for modern Envoy versions (1.18.0+). The release includes the core server implementation, rule management, and flow checking logic, along with Docker and Kubernetes deployment samples to facilitate integration with Envoy in Kubernetes clusters.
sentinel-cluster/sentinel-cluster-server-envoy-rls · high confidence
Add Etcd data-source extension for dynamic rule updates
Users can now use etcd as a dynamic rule data source for Sentinel. The new EtcdDataSource component enables real-time rule updates via a push model (watcher), allowing configuration changes in etcd to be automatically pushed to Sentinel. This includes support for basic and authenticated connections, with configuration options for endpoints, user credentials, charset, and SSL authority.
sentinel-extension/sentinel-datasource-etcd · high confidence
Add JAX-RS adapter demo
Added a new JAX-RS demo application that demonstrates how to integrate Sentinel with JAX-RS. The demo includes a Spring Boot application entry point, a resource class exposing sample endpoints, a custom exception mapper, and configuration to register the Sentinel JAX-RS provider filter for request monitoring.
sentinel-demo/sentinel-demo-jax-rs · medium confidence
Add JAX-RS adapter for flow control and fault tolerance
Introduces a new \sentinel-jax-rs-adapter\ module that enables Sentinel integration for JAX-RS web requests. The adapter provides a \SentinelJaxRsProviderFilter\ to handle incoming requests and a \SentinelJaxRsClientTemplate\ for client-side execution, both supporting synchronous and asynchronous flows. It includes a default exception mapper to ensure Sentinel entries are properly exited and a configurable fallback mechanism that returns a \TOA\_MANY\_REQUESTS\ response when requests are blocked by flow control rules.
sentinel-adapter/sentinel-jax-rs-adapter · high confidence
Add JMX metric exporter extension for Sentinel
A new \sentinel-metric-exporter\ module has been added to export Sentinel metrics via JMX. This includes the \MetricExporter\ interface, a \JMXMetricExporter\ implementation that periodically writes metrics to JMX beans, and a \MetricBeanWriter\ that handles MBean registration and updates. The module also includes a \MetricCollector\ to gather metric data and a \MBeanRegistry\ for managing MBeans. Tests have been added for the registry and writer components.
sentinel-extension/sentinel-metric-exporter · high confidence
Add Logback-based logger implementations for Sentinel
The sentinel-demo-log-logback module now includes concrete implementations of the \com.alibaba.csp.sentinel.log.Logger\ SPI for both \RecordLog\ and \CommandCenterLog\. These classes bridge Sentinel's internal logging to the Logback framework, configured via a new \logback.xml\ and registered through the \META-INF/services\ SPI file. The change also includes unit tests (\RecordLogTest\, \CommandCenterLogTest\) that verify the correct routing of log messages to the console and designated files (\sentinel-record.log\, \sentinel-command-center.log\).
sentinel-demo/sentinel-demo-log-logback · high confidence
Add Motan RPC adapter and demo
This change introduces a new Motan RPC adapter for Sentinel, adding consumer and provider filters that wrap Motan RPC calls with Sentinel entries, enabling flow control and degradation for Motan services. The adapter includes utility classes for resource naming, global configuration for prefixes and fallbacks, and a SPI service file to register the filters. Additionally, a demo module is added to demonstrate usage, including a provider and consumer setup with flow rules.
sentinel-adapter/sentinel-motan-adapter, sentinel-demo/sentinel-demo-motan · high confidence
Add Nacos DataSource demo with namespace support
A new demo in the Sentinel Nacos DataSource module demonstrates how to load flow control rules from a Nacos server. The example includes a traffic simulator and a config sender, and it shows how to connect to Nacos using either a simple remote address or by specifying a Nacos namespace via properties.
sentinel-demo/sentinel-demo-nacos-datasource · high confidence
Add Nacos datasource integration for Sentinel
Users can now use Nacos as a dynamic rule data source for Sentinel. The new \NacosDataSource\ class allows Sentinel to read and listen for changes in Nacos configuration, enabling real-time updates to flow rules and other configurations. The implementation includes a README with usage examples and a Java class that manages the connection to Nacos, including listener registration and resource cleanup.
sentinel-demo/sentinel-demo-okhttp, sentinel-extension/sentinel-datasource-nacos · high confidence
Add OkHttp adapter for flow control
Users can now apply Sentinel flow control to OkHttp web requests. The new \sentinel-okhttp-adapter\ module provides a \SentinelOkHttpInterceptor\ that can be added to an \OkHttpClient\ to track and limit HTTP calls. The adapter supports customizing resource names via a configurable \OkHttpResourceExtractor\ and handling blocked requests through a configurable \OkHttpFallback\ strategy.
sentinel-adapter/sentinel-okhttp-adapter · high confidence
Add Prometheus metric exporter module for Sentinel
A new module, sentinel-prometheus-metric-exporter, has been added to export Sentinel metrics to Prometheus. This includes the core collector logic (SentinelCollector), initialization (PromExporterInit), configuration handling (PrometheusGlobalConfig), and supporting types (GaugeMetricFamily). Users can now integrate this module to scrape Sentinel metrics via an HTTP endpoint (default port 9092) for monitoring in Prometheus.
sentinel-extension/sentinel-prometheus-metric-exporter · high confidence
Add Quarkus and CDI-Interceptor demo applications
New demo applications for Quarkus and CDI interceptors have been added to the codebase. The Quarkus demo provides a RESTful service with flow control and circuit-breaking rules, including fallback handling and async support, along with Dockerfiles for JVM and native builds. The CDI interceptor demo showcases annotation-based Sentinel integration within a Java EE CDI environment, demonstrating resource binding and exception handling.
sentinel-demo/sentinel-demo-quarkus · high confidence
Add Quarkus deployment processor and tests for Sentinel annotation adapter
The Sentinel annotation adapter for Quarkus is now supported. A new deployment processor registers the \SentinelResourceInterceptor\ as an additional bean, and the \sentinel-annotation\ feature is exposed to the Quarkus build system. Comprehensive unit tests verify that block handlers, fallbacks, and exception handling work correctly within the Quarkus runtime.
sentinel-adapter/sentinel-quarkus-adapter/sentinel-annotation-quarkus-adapter-deployment · high confidence
Add Quarkus extension metadata and native-image recorder for Sentinel JAX-RS adapter
The Sentinel JAX-RS adapter for Quarkus now includes a \quarkus-extension.yaml\ descriptor and a \javax.ws.rs.ext.Providers\ service file, enabling automatic discovery and integration of the adapter within Quarkus applications. Additionally, a \SentinelRecorder\ is added for native-image builds, pre-registering FastJSON serializers and deserializers for Sentinel rule classes to ensure proper serialization in native images.
sentinel-adapter/sentinel-quarkus-adapter/sentinel-jax-rs-quarkus-adapter-runtime, sentinel-adapter/sentinel-quarkus-adapter/sentinel-native-image-quarkus-adapter-runtime · high confidence
Add Redis data source extension supporting standalone, Sentinel, and Cluster modes
The Sentinel project introduces a new Redis data source extension that enables real-time rule synchronization via Redis pub/sub. The implementation leverages the Lettuce client library and supports connecting to Redis in three modes: standalone, Sentinel, and Cluster. Users can configure connection details, including SSL/TLS settings for secure communication, to manage flow rules dynamically. The extension includes a new \RedisDataSource\ class and associated configuration builders, accompanied by integration tests for each mode.
sentinel-extension/sentinel-datasource-redis · high confidence
Add Sentinel Dashboard UI for cluster flow control and authority rules
The Sentinel Dashboard now includes new frontend views and dialog components to support cluster-based flow control and authority rules. Users can now configure and manage Token Server and Client settings for cluster mode, including managing server assignments, viewing connection details, and configuring client parameters. Additionally, a new interface allows users to create, edit, and delete authority rules (whitelist/blacklist) for specific resources, enhancing access control capabilities within the dashboard.
sentinel-dashboard/src/main/webapp/resources/app/views · high confidence
Add Sentinel Reactor adapter for reactive stream monitoring
Introduces the Sentinel Reactor adapter module, providing integration with Project Reactor. This includes new classes such as EntryConfig and ContextConfig to manage resource names, entry types, and context configurations. The module adds SentinelReactorSubscriber, FluxSentinelOperator, and MonoSentinelOperator to wrap reactive streams, enabling automatic entry creation and exit handling for Flux and Mono publishers. It also provides ReactorSphU for synchronous entry management and SentinelReactorTransformer for applying Sentinel monitoring to reactive chains.
sentinel-adapter/sentinel-reactor-adapter/src/main · high confidence
Add Sentinel SOFARPC adapter demo module
A new demo module for Sentinel's SOFARPC adapter has been added to the codebase. This includes a README with usage instructions, a provider implementation (DemoProvider), a consumer implementation (DemoConsumer), and the shared service interface (DemoService). The demo illustrates how to integrate Sentinel with SOFARPC by enabling the \sofa.rpc.sentinel.enabled\ parameter in the configuration, allowing users to observe and debug flow control rules via the Sentinel Dashboard.
sentinel-demo/sentinel-demo-sofa-rpc · medium confidence
Add Sentinel SOFARPC adapter for flow control and fallback
Users can now apply Sentinel's flow control, degradation, and system load protection to SOFARPC services. The adapter provides provider and consumer filters that are enabled by default, allowing SOFARPC services and methods to become protected resources in Sentinel. It supports global fallback configuration via the \SofaRpcFallbackRegistry\, enabling custom handling of blocked or degraded requests. The adapter is available as a Maven dependency (\sentinel-sofa-rpc-adapter\) and supports SOFARPC 5.4.x and above.
sentinel-adapter/sentinel-sofa-rpc-adapter · high confidence
Add Sentinel adapter for Apache Dubbo 2.7.x and above
The Sentinel Apache Dubbo adapter introduces new filter classes (SentinelDubboProviderFilter, SentinelDubboConsumerFilter) and utility classes (DubboUtils, DubboAppContextFilter) to integrate Sentinel with Apache Dubbo 2.7.x and above. This includes support for custom origin parsers, configurable resource name prefixes, and async invocation handling, enabling users to apply Sentinel's traffic control and degradation features to their Dubbo services.
sentinel-adapter/sentinel-apache-dubbo-adapter/src/main · high confidence
Add Sentinel adapter for Apache Dubbo 3.x
Users can now integrate Sentinel with Apache Dubbo 3.x services. The new \sentinel-apache-dubbo3-adapter\ module provides consumer and provider filters that automatically protect Dubbo services and methods with flow control, overload protection, and global fallbacks. The adapter supports customizing origin parsing, resource name prefixes, and fallback handlers via the \DubboAdapterGlobalConfig\.
sentinel-adapter/sentinel-apache-dubbo3-adapter · high confidence
Add Sentinel adapter for Apache HttpClient
Introduced a new \sentinel-apache-httpclient-adapter\ module that enables flow control for Apache HttpClient web requests. The adapter provides a \SentinelApacheHttpClientBuilder\ to wrap the standard \CloseableHttpClient\, allowing users to apply Sentinel rules to HTTP client calls. It supports customizing the resource name via a configurable \ApacheHttpClientResourceExtractor\ and handling blocked requests with a configurable \ApacheHttpClientFallback\. The module includes a README with usage examples and configuration details, along with unit tests for the configuration, fallback, and integration scenarios.
sentinel-adapter/sentinel-apache-httpclient-adapter · high confidence
Add Sentinel adapter for Zuul 2.x API Gateway
This change introduces a new adapter for the Zuul 2.x API Gateway, enabling flow control and customized API-level protection for routes. The implementation includes inbound and outbound filters to manage Sentinel entries, a default block fallback provider that returns 429 or 500 responses, and a mechanism to register custom fallback providers for specific routes. It also adds support for customizing the \ConfigurableRequestItemParser\ to extract request parameters for flow control rules.
sentinel-adapter/sentinel-zuul2-adapter · medium confidence
Add Servlet adapter demo with URL cleaning and block handling
A new servlet-based demo application has been added to the Sentinel project, providing a complete example of integrating Sentinel with Java Servlets. The demo includes a custom URL cleaner that normalizes dynamic paths (e.g., /foo/123 becomes /foo/\*) and configures a default URL block handler. It also sets up a simple servlet controller and a web.xml configuration that registers the Sentinel filter, enabling users to see how request origin parsing, URL cleaning, and blocking behaviors are applied in a standard web environment.
sentinel-demo/sentinel-demo-servlet · medium confidence
Add Spring AOP demo for Sentinel annotation support
A new demo module, sentinel-demo-annotation-spring-aop, has been added to showcase the integration of Sentinel's @SentinelResource annotation with Spring AOP. The module includes a controller, service implementations, and configuration classes that demonstrate how to apply Sentinel resource annotations in a Spring Boot application, including examples of block handlers and fallback methods.
sentinel-demo/sentinel-demo-annotation-spring-aop · high confidence
Add Spring Cloud Config data source extension
Sentinel now supports dynamic rule management via Spring Cloud Config. Users can configure Sentinel rules in a Spring Cloud Config server and have them automatically loaded and hot-updated in the Sentinel dashboard or application. This is achieved through the new \SpringCloudConfigDataSource\ and \SentinelRuleLocator\ classes, which integrate with the Spring Cloud Config client to fetch rules and notify listeners of changes.
(repo-wide) · medium confidence
Add Spring Cloud Gateway adapter demo with request item pattern matching
A new demo application for the Sentinel Spring Cloud Gateway adapter has been added, providing a concrete example of integrating Sentinel with Spring Cloud Gateway. The demo configures global filters and exception handlers, and demonstrates flow control using both route-based and customized API definitions. It showcases request item pattern matching capabilities, allowing users to apply rate-limiting and control behaviors based on URL paths, headers, and URL parameters.
sentinel-demo/sentinel-demo-spring-cloud-gateway · high confidence
Add Spring Cloud Gateway adapter for flow control and API matching
The Sentinel Spring Cloud Gateway adapter module is introduced, providing a new \SentinelGatewayFilter\ that applies flow control to requests passing through the gateway. This includes support for route-based and custom API-based flow control, with the ability to match requests against API definitions using ant-path or regex patterns. The adapter also supports parsing request items such as headers, query parameters, and cookies for flow control conditions, and provides customizable callbacks for handling blocked requests, including default JSON/HTML error responses and redirect handlers.
sentinel-adapter/sentinel-spring-cloud-gateway-adapter/src/main · high confidence
Add Spring MVC transport module for command and heartbeat
Users can now use Spring MVC to handle Sentinel transport commands and send heartbeats. This change introduces the \sentinel-transport-spring-mvc\ module, which provides \SpringMvcHttpCommandCenter\ and \SpringMvcHttpHeartbeatSender\ implementations. These components allow Sentinel to expose its command API and send heartbeat requests via standard Spring MVC controllers, enabling easier integration with Spring Boot applications that rely on Spring MVC for HTTP handling.
sentinel-demo/sentinel-demo-transport-spring-mvc, sentinel-transport/sentinel-transport-spring-mvc · high confidence
Add Spring WebFlux demo application
A new demo application for Sentinel's Spring WebFlux adapter has been added. This includes a Spring Boot application entry point, configuration classes for Redis and WebFlux (registering the SentinelWebFluxFilter and SentinelBlockExceptionHandler), controllers (FooController, BazController) demonstrating reactive endpoints, and services (FooService, BazService) that interact with Redis. This provides a reference implementation for integrating Sentinel with reactive Spring WebFlux applications.
sentinel-demo/sentinel-demo-apache-httpclient, sentinel-demo/sentinel-demo-spring-webflux, sentinel-demo/sentinel-demo-spring-webmvc · high confidence
Add cluster flow control and concurrency limiting capabilities
The Sentinel cluster server now supports cluster-level flow control and concurrency limiting. Users can configure and enforce global QPS limits for specific namespaces, apply rate limiting based on request parameters, and limit the number of concurrent requests. The server tracks metrics for these rules and provides token-based access control to manage traffic in a distributed environment.
sentinel-cluster/sentinel-cluster-server-default/src/main · high confidence
Add command handler demo with custom echo command and interceptors
The sentinel-demo-command-handler module now includes a complete example of the command handler system. It introduces a custom 'echo' command via EchoCommandHandler, which is registered in the SPI service file. Additionally, it provides two command interceptors (AllCommandHandlerInterceptor and EchoCommandHandlerInterceptor) that wrap command execution to log timing and intercept specific commands, demonstrating how to extend the command center's behavior.
sentinel-demo/sentinel-demo-command-handler · high confidence
Add command handlers and core classes for parameter flow control
Users can now manage and monitor parameter flow rules via the new GetParamFlowRulesCommandHandler and ModifyParamFlowRulesCommandHandler, which expose the ability to retrieve and update these rules through the command interface. The change introduces the core parameter flow control infrastructure, including the ParamFlowSlot for enforcement, ParamFlowChecker for validation logic, and supporting classes like ParamFlowRule, ParamFlowException, and ParameterMetric for tracking and statistics.
sentinel-extension/sentinel-parameter-flow-control/src/main · high confidence
Add default fallback handling for Dubbo 2.6.x
A new default fallback mechanism for Dubbo 2.6.x has been introduced to handle blocked requests. This includes a new \DefaultDubboFallback\ implementation that wraps block exceptions into a \SentinelRpcException\ to avoid serialization issues, alongside a \DubboFallback\ interface and a registry for configuring consumer and provider fallbacks. The previous \DubboFallbackRegistry\ is now deprecated in favor of \DubboAdapterGlobalConfig\.
sentinel-adapter/sentinel-dubbo-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/dubbo/fallback · high confidence
Add embedded cluster token server support
Sentinel now supports an embedded mode for the cluster token server. A new \ClusterTokenServer\ interface and an \EmbeddedClusterTokenServer\ interface (extending \TokenService\) have been added to the core module. An \EmbeddedClusterTokenServerProvider\ uses the SPI mechanism to load the first available implementation, enabling the cluster server to be activated automatically when a provider is present.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/cluster/server · medium confidence
Add gateway API and flow rule management in the Sentinel dashboard
Users can now manage gateway API definitions and gateway flow rules directly through the Sentinel dashboard. The new \GatewayApiController\ and \GatewayFlowRuleController\ expose REST endpoints for creating, updating, and listing these rules. This includes support for configuring client IP and host-based parameters in the flow rule dialog, enabling users to apply rate-limiting and other flow control strategies to gateway routes and custom API groups.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/gateway · high confidence
Add gateway flow control and API management pages
The Sentinel dashboard now includes new pages for managing gateway flow rules and custom APIs. Users can create, edit, and delete gateway flow control rules, as well as manage custom API definitions through the new controllers and templates in the gateway section of the dashboard.
sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers/gateway · high confidence
Add parameter-based flow control demo for QPS mode
A new demo application (ParamFlowQpsDemo) and its traffic runner (ParamFlowQpsRunner) were added to the sentinel-demo-parameter-flow-control module. The demo demonstrates how to configure and apply flow control based on specific parameter values (hot spots) using QPS (queries per second) as the control metric. It shows how to set a global threshold for all parameters and define an exception item to apply a different threshold to a specific parameter value.
sentinel-demo/sentinel-demo-parameter-flow-control · high confidence
Add support for Sentinel flow control on the Zuul 1.x API gateway
The Sentinel Zuul adapter is introduced to provide route-level and customized API-level flow control for applications using the Zuul 1.x API gateway. This includes new filter implementations (pre, post, and error filters) that track entries and handle block exceptions by invoking configurable fallback providers. The adapter also supports customizing request item parsing (e.g., for cookies) and allows users to define custom fallback responses when requests are blocked by Sentinel rules.
sentinel-adapter/sentinel-zuul-adapter · high confidence
Add token bucket flow control implementation
Added the core classes for a token-bucket-based rate limiter to the Sentinel core library. The change introduces the TokenBucket interface and its implementations (AbstractTokenBucket, DefaultTokenBucket, and StrictTokenBucket) in the sentinel-core module, enabling users to apply token-bucket flow control strategies to their applications.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/tokenbucket · high confidence
Added AsyncEntryDemo to demonstrate asynchronous entry handling
A new demo class, AsyncEntryDemo, was added to the basic module. It illustrates how to use the asynchronous entry API (AsyncEntry) for handling async operations, including nested sync entries within async contexts and callback-based execution flows.
sentinel-demo/sentinel-demo-basic/src/main/java/com/alibaba/csp/sentinel/demo · high confidence
Added AuthorityRule demo for origin-based access control
A new demo class, AuthorityDemo, was added to the sentinel-demo-basic module. It demonstrates how to configure and use AuthorityRule to enforce whitelist and blacklist policies based on request origin, showing how requests are allowed or blocked depending on the configured origin strings.
sentinel-demo/sentinel-demo-basic/src/main/java/com/alibaba/csp/sentinel/demo/authority · high confidence
Added Quarkus adapter support for JAX-RS and Native Image builds
Introduced new Quarkus deployment processors that register the 'sentinel-jax-rs' and 'sentinel-native-image' features. The JAX-RS adapter processor enables Sentinel integration with JAX-RS endpoints, while the native image processor configures runtime initialization and reflective access for Sentinel classes to ensure compatibility with GraalVM native image builds. A corresponding test suite validates flow control and fallback behavior for JAX-RS resources.
sentinel-adapter/sentinel-quarkus-adapter/sentinel-jax-rs-quarkus-adapter-deployment, sentinel-adapter/sentinel-quarkus-adapter/sentinel-native-image-quarkus-adapter-deployment · high confidence
Added Sentinel demo for Zuul 2.x gateway integration
A new demo application for the Sentinel Zuul 2.x adapter has been added to the codebase. This includes the main bootstrap class, configuration for gateway rules and API definitions, and the necessary Guice modules and filters to integrate Sentinel's flow control with a Zuul 2.x gateway server. The demo configures routing for /images and /comments endpoints and applies specific rate-limiting and parameter-based flow rules.
sentinel-demo/sentinel-demo-zuul2-gateway · high confidence
Added cluster logging utilities
Added two new utility classes, ClusterClientStatLogUtil and ClusterStatLogUtil, which configure and manage statistical logging for Sentinel cluster operations. These utilities set up log files (sentinel-cluster-client.log and sentinel-cluster.log) with specific formatting and rotation settings, enabling users to monitor cluster-related metrics and events.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/cluster/log · high confidence
Added default fallback support for Dubbo services
The Sentinel Dubbo adapter now supports global fallback handling for both consumers and providers. Users can register a custom \DubboFallback\ via \DubboAdapterGlobalConfig\ to handle blocked or degraded requests, with a default implementation that wraps \BlockException\ and throws it. The demo code has been updated to demonstrate this fallback mechanism alongside existing flow control and dashboard integration steps.
sentinel-demo/sentinel-demo-dubbo · high confidence
Added domain models for cluster management and gateway API
The Sentinel dashboard introduces new domain objects to support cluster mode and gateway rule management. For cluster management, the dashboard now includes request and state view objects (such as ClusterAppAssignResultVO, ClusterAppFullAssignRequest, ClusterClientInfoVO, and various state wrappers) that enable the UI to manage server-client assignments, monitor cluster health, and configure transport and flow settings. Additionally, a new value object (AddApiReqVo) is added to support the creation of gateway API rules, allowing users to define and manage gateway-specific flow control rules through the dashboard.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/domain · high confidence
Added functional utility interfaces and classes to sentinel-core
The sentinel-core module now includes new utility classes and interfaces in the \com.alibaba.csp.sentinel.util.function\ package. This includes functional interfaces \Consumer\, \BiConsumer\, \Function\, \Predicate\, and \Supplier\, along with a \Tuple2\ class for holding pairs of values. These additions provide convenient abstractions for common functional programming patterns within the Sentinel core library.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/util/function · high confidence
Asynchronous entry support and entry prioritization
Sentinel now supports asynchronous resource protection via the new \AsyncEntry\ class and \SphResourceTypeSupport\ interface, allowing users to track statistics and perform rule checking for async invocations. The core \Entry\ class now implements \AutoCloseable\ for try-with-resources support, and the \CtSph\ implementation has been refactored to handle both synchronous and asynchronous entry creation with priority support. Additionally, the \Constants\ class introduces virtual resource names for total inbound traffic, CPU usage, and system load statistics, while the \Env\ class removes the global \NodeBuilder\ in favor of a more flexible SPI-based slot chain builder.
sentinel-core/src/main/java/com/alibaba/csp/sentinel · high confidence
Command center refactored with SPI-based provider resolution and command handler interception
The command center in sentinel-transport-common has been refactored to use SPI-based providers (CommandCenterProvider, HeartbeatSenderProvider) that resolve instances by highest precedence. A new CommandHandlerInterceptor SPI allows custom logic to intercept specific commands (e.g., getRules) before execution, enabled via the InterceptingCommandHandler wrapper. Additionally, the CommandMapping annotation now supports a 'desc' field for command descriptions, and the ApiCommandHandler exposes all available commands with their descriptions. Tests have been added for the new interception and configuration logic.
sentinel-transport/sentinel-transport-common · high confidence
Default Netty-based cluster client implementation added
A default implementation of the cluster client using Netty for transport has been introduced, including the core client classes (DefaultClusterTokenClient, NettyTransportClient) and a full set of Netty-based codecs for encoding and decoding cluster requests and responses (Flow, ParamFlow, Ping). This provides a concrete, out-of-the-box network transport layer for Sentinel cluster communication, replacing the need for custom transport implementations.
sentinel-cluster/sentinel-cluster-client-default/src/main · high confidence
Dubbo adapter supports resource name prefixes and custom origin parsing
The Sentinel Dubbo adapter now allows users to configure prefixes for Dubbo service resource names, applying them to both provider and consumer sides. Additionally, the adapter introduces a pluggable origin parser, enabling custom logic to extract the caller identity from Dubbo invocations. These changes are managed through the new DubboAdapterGlobalConfig, which also provides default fallback handling for blocked requests.
sentinel-adapter/sentinel-dubbo-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/dubbo · high confidence
Introduce @SentinelResource annotation for resource definition
The Sentinel annotation module now includes the \SentinelResource\ annotation, allowing users to define Sentinel resources directly on methods and classes. This annotation supports configuring the resource name, entry type, resource type classification, and handlers for blocking and fallback scenarios. It also provides configuration for exception tracing and ignoring, enabling more granular control over how Sentinel monitors and protects annotated code.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/annotation · high confidence
Introduce AspectJ-based Sentinel annotation support
Adds a new \sentinel-annotation-aspectj\ extension that provides an AOP implementation using AspectJ for the \@SentinelResource\ annotation. This allows developers to apply Sentinel resource tracking, fallback handling, and block handling via annotations on methods, with support for configuring fallbacks, block handlers, and exception filtering. The implementation includes the \SentinelResourceAspect\ and supporting classes like \AbstractSentinelAspectSupport\ and \ResourceMetadataRegistry\, along with integration tests demonstrating usage with Spring AOP and standalone AspectJ configurations.
sentinel-extension/sentinel-annotation-aspectj · high confidence
Introduce Sentinel Spring Web MVC adapter
Added the Sentinel Spring Web MVC adapter module, providing interceptors and configuration classes to integrate Sentinel flow control with Spring Web MVC applications. The release includes the core interceptor logic, a total request interceptor, and a mechanism to make exceptions visible to Sentinel when using Spring's @ExceptionHandler. It also provides a default block handler that returns HTTP 429 (Too Many Requests) and allows for customizing block handling, origin parsing, and URL cleaning.
sentinel-adapter/sentinel-spring-webmvc-adapter · high confidence
Introduce common module for managing gateway API definitions and flow rules
The \sentinel-api-gateway-adapter-common\ module is introduced to provide a unified abstraction for API gateway flow control. It adds \GatewayFlowRule\ for route or API-specific flow control, \ApiDefinition\ for defining API groups with predicates, and command handlers (\GetGatewayRuleCommandHandler\, \UpdateGatewayRuleCommandHandler\, etc.) to fetch and update gateway rules and API groups via transport commands. Additionally, it includes a \ConfigurableRequestItemParser\ to support customizing request item parsing for gateways like SC and Zuul, and a \GatewayParamParser\ to handle parameter extraction and matching strategies.
sentinel-adapter/sentinel-api-gateway-adapter-common · high confidence
Introduce configurable authentication and authorization for the Sentinel dashboard
The Sentinel dashboard now supports customizable authentication and authorization. A new \AuthConfiguration\ registers beans for an \AuthService\, a \LoginAuthenticationFilter\, and an \AuthorizationInterceptor\. The \AuthProperties\ class allows enabling or disabling authentication via the \auth.enabled\ configuration property. The \WebConfig\ registers the authentication filter and the authorization interceptor, applying them to all requests. Additionally, new interfaces \DynamicRuleProvider\ and \DynamicRulePublisher\ are introduced to support dynamic rule management, with default implementations \FlowRuleApiProvider\ and \FlowRuleApiPublisher\ that fetch and publish flow rules via the Sentinel API client.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/config · high confidence
Introduce core abstractions for Sentinel cluster flow control
Added new classes to support cluster mode flow control: a \ClusterStateManager\ to manage switching between client and server modes, a \TokenService\ interface defining request and release operations for tokens, and supporting entities including \TokenResult\, \TokenResultStatus\ (defining status codes like OK, BLOCKED, FAIL), and \TokenServerDescriptor\.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/cluster · high confidence
Introduce default cluster implementation common module
A new \sentinel-cluster-common-default\ module has been added, providing the foundational classes for Sentinel's distributed flow control. This includes the \ClusterConstants\ for message types and status codes, \ClusterErrorMessages\ for error handling, and the \ClusterTransportClient\ interface for synchronous cluster communication. The update also introduces core request and response models (\ClusterRequest\, \ClusterResponse\) along with their respective data payloads (\FlowRequestData\, \FlowTokenResponseData\). Additionally, the change adds a \ConfigSupplierRegistry\ for managing namespace suppliers and an \@RequestType\ annotation to identify request handlers.
sentinel-cluster/sentinel-cluster-common-default · medium confidence
Introduce priority-based request occupation mechanism for sliding window statistics
The Sentinel core now supports a new 'occupy' mechanism that allows high-priority requests to preempt tokens from future time windows in the sliding window statistics. This is implemented via the new \OccupySupport\ interface and \OccupyTimeoutProperty\ configuration, enabling 'prioritized requests final pass' logic. Additionally, the \Node\ interface and its implementations (\DefaultNode\, \ClusterNode\, \EntranceNode\, \StatisticNode\) have been updated to support this mechanism, with several QPS and request count methods changing their return types from \long\ to \double\ for higher precision. The \StatisticNode\ also switches from \AtomicInteger\ to \LongAdder\ for thread count tracking to improve concurrency performance.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/node · high confidence
Introduces MetricBucket for tracking sliding window statistics
A new MetricBucket class has been added to the statistic data package. This class manages counters for various metric events (such as pass, block, exception, and response time) using LongAdder instances, and tracks the minimum response time. This change supports the new occupy mechanism for future buckets of the sliding window, enabling more granular and thread-safe statistical tracking for prioritized requests.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/data · high confidence
New Eureka data source for dynamic Sentinel rules
Users can now use Eureka as a dynamic rule data source for Sentinel. A new \EurekaDataSource\ implementation automatically fetches rule data from Eureka instance metadata, enabling real-time rule updates. The change includes the Java implementation, a README with usage examples for both SDK and Spring Cloud applications, and associated tests.
sentinel-extension/sentinel-datasource-eureka · high confidence
New SPI loading mechanism with priority and singleton support
Sentinel introduces a new \SpiLoader\ and \Spi\ annotation to manage service providers. The \SpiLoader\ supports loading providers by order priority, alias, or singleton configuration, and includes fixes for exception handling and duplicate class detection.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/spi · high confidence
New Sentinel adapter for Spring WebFlux
Sentinel now provides a dedicated adapter module for Spring WebFlux, enabling flow control and circuit breaking for reactive web applications. The new \sentinel-spring-webflux-adapter\ module introduces a \SentinelWebFluxFilter\ to intercept requests and a \SentinelBlockExceptionHandler\ to manage blocked responses. Users can customize behavior by registering a \BlockRequestHandler\ for blocked requests, a \UrlCleaner\ for URL normalization and exclusion, and a \RequestOriginParser\ to identify request origins. The module includes a README with setup instructions and integration tests to verify functionality.
sentinel-adapter/sentinel-spring-cloud-gateway-v6x-adapter, sentinel-adapter/sentinel-spring-restclient-adapter, sentinel-adapter/sentinel-spring-webflux-adapter · high confidence
New Sentinel annotation CDI extension for Java EE
Added a new CDI (Contexts and Dependency Injection) extension that enables Sentinel resource management via Java EE interceptors. This includes the \@SentinelResourceBinding\ annotation, a \SentinelResourceInterceptor\ to apply Sentinel's flow control and fallback logic to CDI-managed beans, and supporting classes for metadata caching and method resolution. The extension allows developers to use annotations to define resources, handle block exceptions, and manage fallbacks in a Java EE environment.
sentinel-extension/sentinel-annotation-cdi-interceptor · high confidence
New Sentinel-Zuul gateway demo with API and flow control rules
A new demo application for integrating Sentinel with the Zuul 1.x gateway has been added. The demo configures Sentinel filters (pre, post, and error) and defines gateway flow control rules, including path-based API definitions and rate-limiting rules for specific routes and custom APIs.
sentinel-demo/sentinel-demo-zuul-gateway · high confidence
New Spring Web MVC v6x adapter for flow control
A new Sentinel adapter for Spring Web MVC v6x has been introduced, providing interceptors to integrate Sentinel with Spring Web applications. The adapter offers three interceptor types: \SentinelWebInterceptor\ for standard URL-based tracking, \SentinelWebPrefixInterceptor\ for HTTP method-prefixed resources, and \SentinelWebTotalInterceptor\ for unified total request tracking. It includes configuration options for URL cleaning, context path specification, and origin parsing, along with a default block handler that returns HTTP 429. The release also includes integration and unit tests to verify the adapter's behavior.
sentinel-adapter/sentinel-spring-webmvc-v6x-adapter · high confidence
New adapter modules for Apache Dubbo, HTTP clients, and Spring frameworks
Added Maven build descriptors for new Sentinel adapter modules, including support for Apache Dubbo (versions 2.7.x and 3.x), Apache HttpClient (4.x and 5.x), OkHttp, Spring WebMVC, Spring WebFlux, Spring Cloud Gateway, and Quarkus. These new modules extend Sentinel's capabilities to integrate with these specific frameworks and RPC/HTTP clients.
(dependencies) · high confidence
New cluster flow control demos for standalone and embedded modes
Added new demo applications for Sentinel cluster flow control, providing standalone and embedded examples. The standalone demo (sentinel-demo-cluster-server-alone) includes a ClusterServerDemo and initialization logic that connects to Nacos for dynamic flow and parameter flow rules, server transport configuration, and namespace sets. The embedded demo (sentinel-demo-cluster-embedded) provides a Spring Boot application with a REST controller and service that demonstrate cluster client behavior, including Nacos-based dynamic rule loading, client configuration, and cluster state management.
sentinel-demo/sentinel-demo-cluster/sentinel-demo-cluster-embedded · high confidence
New cluster mode configuration and assignment APIs
The Sentinel Dashboard now exposes new REST endpoints for managing cluster mode. Users can configure cluster servers and clients via the /cluster/config/modify\_single endpoint, and retrieve the state of cluster servers and clients for a specific application through /cluster/state\_single, /cluster/server\_state/{app}, and /cluster/client\_state/{app} endpoints. Additionally, the /cluster/assign endpoint allows assigning or unbinding cluster servers for an application.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard, sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/cluster · high confidence
New demo for Apache Dubbo 2.7.x integration
A new demo module has been added to showcase integration with Apache Dubbo 2.7.x and above. The \sentinel-demo-apache-dubbo\ module now includes a provider (\FooProviderBootstrap\) and a consumer (\FooConsumerBootstrap\, \FooConsumerExceptionDegradeBootstrap\) that demonstrate flow control, exception degradation, and custom fallback handling for RPC calls. This provides a reference implementation for users looking to apply Sentinel's protection mechanisms to their Apache Dubbo services.
sentinel-demo/sentinel-demo-apache-dubbo · high confidence
New demo modules for custom Sentinel slots and slot chains
Added two new demo modules, sentinel-demo-slot-spi and sentinel-demo-slotchain-spi, to illustrate how to extend Sentinel's behavior. The slot-spi module provides a standalone example of a custom ProcessorSlot (DemoSlot) that logs context and entry details. The slotchain-spi module demonstrates a custom SlotChainBuilder (DemoSlotChainBuilder) that constructs a modified slot chain, including examples for applying flow and degrade rules with the custom chain.
sentinel-demo/sentinel-demo-slot-spi, sentinel-demo/sentinel-demo-slotchain-spi · high confidence
New flow control demos for regex-based QPS and warmup rate limiting
Added two new demo classes in the flow package: FlowQpsRegexDemo, which demonstrates flow control using a regex pattern to match resource names, and WarmUpRateLimiterFlowDemo, which demonstrates the warmup behavior combined with rate limiting. Also updated FlowQpsDemo to use 32 threads and restructured the initialization order, and corrected a typo in FlowThreadDemo's console output.
sentinel-demo/sentinel-demo-basic/src/main/java/com/alibaba/csp/sentinel/demo/flow · high confidence
New metric extension hooks for custom statistics collection
Sentinel now provides a new \MetricExtension\ interface and its advanced variant \AdvancedMetricExtension\ in the \sentinel-core\ module, allowing users to implement custom logic for tracking pass, block, success, exception, and response time metrics. The \MetricCallbackInit\ class registers entry and exit callbacks (\MetricEntryCallback\ and \MetricExitCallback\) that automatically invoke these extensions during request processing, enabling third-party monitoring systems to capture detailed internal statistics without modifying core Sentinel code.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/metric · high confidence
New utility classes for the Sentinel dashboard
Added four new utility classes in the sentinel-dashboard package: AsyncUtils for handling asynchronous operations and futures, ClusterEntityUtils for managing cluster state entities, MachineUtils for parsing machine IP and port information, and VersionUtils for parsing Sentinel version strings. These utilities support the dashboard's cluster management and version parsing capabilities.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/util · high confidence
Refactored authentication and authorization into a pluggable architecture
The Sentinel Dashboard's security model has been refactored to support customizing authentication and authorization implementations. A new \AuthService\ interface and \AuthAction\ annotation provide a clean API for developers to implement their own login and permission-checking logic. The default \SimpleWebAuthServiceImpl\ uses HTTP sessions for basic authentication, while \DefaultLoginAuthenticationFilter\ and \DefaultAuthorizationInterceptor\ handle the underlying request filtering and privilege checks. This change allows users to easily swap out the default behavior with custom security providers.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/auth · high confidence
SLF4J logging implementation for Sentinel
Sentinel now provides an SLF4J-based logging implementation. The \sentinel-logging-slf4j\ module introduces \RecordLogLogger\ and \CommandCenterLogLogger\ classes that bridge Sentinel's internal logging to SLF4J, and the service provider configuration registers these implementations so that \RecordLog\ and \CommandCenterLog\ output to SLF4J instead of the default logger.
sentinel-logging/sentinel-logging-slf4j · high confidence
Sentinel Dashboard adds login page, authority rules, and cluster flow control support
The Sentinel Dashboard now includes a simple login page to support basic authentication, with an \AuthInterceptor\ handling 401 responses by redirecting to the new \/login\ route. The dashboard also adds support for configuring authority rules and managing cluster flow control, including routes and controllers for cluster app assignment, server lists, client lists, and single-node configuration. Additionally, the frontend JavaScript is updated to support these new features, including a \VersionService\ and \AuthService\ for authentication, and updated services for flow, degrade, and system rules.
sentinel-dashboard/src/main/webapp/resources/dist · high confidence
Sentinel Dashboard adds new management pages for cluster flow control and authority rules
The Sentinel Dashboard now includes new frontend controllers and views for managing cluster flow control configurations, including server and client assignments, monitoring, and single-node cluster settings. Additionally, a new controller for authority rules (whitelist/blacklist) has been added, allowing users to configure and manage access control rules directly from the dashboard. These changes introduce new UI components and logic to support fine-grained control over cluster-based rate limiting and resource access.
sentinel-dashboard/src/main/webapp/resources/app/scripts/controllers · high confidence
Sentinel Dashboard adds support for CPU-based system load rules and new rule types
The Sentinel Dashboard now supports configuring system load rules based on CPU usage (grade 4), alongside existing metrics like load, RT, and threads. Additionally, the dashboard introduces new services for managing authority rules, parameter flow control, gateway API and flow rules, cluster state, and authentication, while refactoring the existing degrade and flow services to use RESTful endpoints and improved validation.
sentinel-dashboard/src/main/webapp/resources/app/scripts/services · high confidence
Sentinel logging becomes configurable and pluggable
Sentinel's logging subsystem has been refactored to support flexible configuration and custom logger implementations via a new SPI mechanism. Users can now configure the log output destination (file or console), log level, character set, and whether to include the process ID in log filenames using system properties or environment variables. Additionally, the \RecordLog\ class now delegates to a pluggable \Logger\ interface, allowing users to provide custom logging adapters (such as a JUL adapter) while maintaining backward compatibility with the default behavior.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/log · high confidence
Removals
Removal of the Sentinel Spring Boot Starter module
The Sentinel Spring Boot Starter module has been completely removed from the codebase. This means that the automatic configuration for the Sentinel web servlet filter, the Sentinel actuator endpoint for monitoring, and the associated configuration properties (spring.sentinel.\*) are no longer available. Users relying on this starter for out-of-the-box integration with Spring Boot applications will need to migrate to alternative integration methods.
sentinel-adapter/sentinel-spring-boot-starter · high confidence
Behavioural changes
Add CPU usage threshold to system protection rules
The SystemGuardDemo now configures a CPU usage limit (0.6 or 60%) via setHighestCpuUsage, extending the system-level protection capabilities to include CPU load monitoring alongside existing metrics like system load, average response time, and thread count.
sentinel-demo/sentinel-demo-basic/src/main/java/com/alibaba/csp/sentinel/demo/system · high confidence
Add request origin parsing and block exception details to the web servlet adapter
The Sentinel web servlet adapter now supports parsing the request origin (such as IP or user) via a new \RequestOriginParser\ interface and callback registration in \WebCallbackManager\. Additionally, the \UrlBlockHandler\ and its default implementation now receive the \BlockException\ in their \blocked\ method, allowing custom block handlers to inspect the specific reason a request was blocked.
sentinel-adapter/sentinel-web-servlet/src/main/java/com/alibaba/csp/sentinel/adapter/servlet/callback · high confidence
Added Bootstrap 3.0.3 CSS to the dashboard's local lib assets
The Sentinel dashboard's frontend now includes a local copy of the Bootstrap 3.0.3 CSS framework. This change moves the local frontend library assets from the dist directory to the lib directory, ensuring the dashboard has the necessary stylesheets available locally for rendering the user interface.
sentinel-dashboard/src/main/webapp/resources/lib · high confidence
Async context support and context map size monitoring
The Context class now supports asynchronous invocations via a new \newAsyncContext\ factory method and an \isAsync\ flag. Additionally, \ContextUtil\ exposes \contextSize()\ to monitor the number of active context names and \isDefaultContext()\ to identify the default context. The \enter\ method now logs a warning once when the number of context names exceeds the configured maximum, preventing unbounded memory growth.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/context · medium confidence
Asynchronous logging and new JUL adapter for Sentinel core
Sentinel's logging implementation has been refactored to use a new Java Util Logging (JUL) adapter. The default JUL-based logging is now asynchronous, utilizing thread pools to handle log records without blocking the application thread. This change introduces new classes such as ConsoleHandler, DateFileLogHandler, and JavaLoggingAdapter within the com.alibaba.csp.sentinel.log.jul package. The CspFormatter has been updated to use DateTimeFormatter for timestamp formatting, and the logging infrastructure now supports configurable log output types (console or file) with improved performance and reliability.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/log/jul · high confidence
Centralized configuration loading with environment variable and system property overrides
Sentinel now loads its configuration through a new SentinelConfigLoader that supports arbitrary configuration file paths via the CSP\_SENTINEL\_CONFIG\_FILE environment variable or csp.sentinel.config.file system property, with JVM system properties overriding file-based settings. This change introduces several new configurable properties including statistic max RT, metric flush interval, SPI classloader mode, and regex rule matching behavior, all accessible via the SentinelConfig class.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/config · medium confidence
Corrected typo in Encoder interface documentation
Fixed a typo in the Javadoc for the \encode\ method in the \Encoder\ interface, correcting 'witch' to 'which' in the return value description.
sentinel-transport/sentinel-transport-netty-http/src/main/java/com/alibaba/csp/sentinel/transport/command/codec · high confidence
Customizable HTTP status for Sentinel block pages
The Sentinel web servlet adapter now allows users to configure the HTTP status code returned when a request is blocked. A new configuration key, csp.sentinel.web.servlet.block.status, lets you set a custom status (defaulting to 429 Too Many Requests). This enables more precise control over how blocked requests are handled by clients and proxies.
sentinel-adapter/sentinel-web-servlet/src/main/java/com/alibaba/csp/sentinel/adapter/servlet/config · high confidence
Default slot chain construction now uses SPI for extensibility
The DefaultSlotChainBuilder has been refactored to build the default processor slot chain by loading and sorting all registered ProcessorSlot implementations via the SPI mechanism, rather than hardcoding a fixed list of slots. This change makes the default slot chain extensible, allowing users to add or reorder slots through SPI without modifying core code. The class was also renamed from DefaultSlotsChainBuilder to DefaultSlotChainBuilder.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots · high confidence
Enhanced block logging with rule ID and prioritized entry support
The logging system for blocked requests has been improved to include the specific rule ID in the generated logs, allowing users to identify which rule triggered the block. Additionally, the logging slot now supports prioritized entry processing, and the log file path is now configurable via the log base directory setting. The implementation also refactors the slot chain builder to use SPI for better extensibility.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/logger · medium confidence
Enhanced web request tracking with HTTP method support and context unification
The Sentinel Web Servlet adapter now supports HTTP-method-level flow control, allowing rules to be applied to specific methods (e.g., POST, GET) via the new \HTTP\_METHOD\_SPECIFY\ init parameter. Additionally, the \WEB\_CONTEXT\_UNIFY\ init parameter allows users to unify the web context name, which helps reduce memory footprint by limiting the number of contexts. The \CommonFilter\ also introduces support for request origin parsing and URL cleaning, while the \CommonTotalFilter\ is updated to use the unified context name for total request tracking.
sentinel-adapter/sentinel-web-servlet/src/main/java/com/alibaba/csp/sentinel/adapter/servlet · medium confidence
Frontend assets and build configuration updates
The dashboard frontend now serves local copies of static assets (CSS, JS, fonts) from the local lib directory instead of relying on external CDNs, which improves reliability and offline usability. The G2 charting library has been upgraded from version 3.2.0-beta.6 to 3.4.10. Additionally, the build system (Gulp) has been updated to include new service modules for version, authentication, flow control (v1 and v2), degradation, parameter flow, authority, cluster state, and gateway rules, reflecting expanded rule management capabilities in the UI.
sentinel-dashboard/src/main/webapp/resources · high confidence
Header bar now displays version info and user logout controls
The dashboard header has been updated to display the current Sentinel version number alongside the title. Additionally, a navigation menu has been added to the header containing a link to the Sentinel Enterprise Edition and a logout button (labeled '注销') that appears only when a user is authenticated. The header controller now fetches the version via VersionService and manages the visibility of the logout button based on the user's authentication status, while also handling legacy session data in localStorage to ensure compatibility with older versions.
sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/header · medium confidence
Heartbeat sender now supports HTTPS and configurable API paths
The HTTP heartbeat sender has been refactored to support both HTTP and HTTPS protocols, allowing secure communication with the dashboard. It now reads the dashboard address and protocol from the configured endpoint list, and uses a configurable API path for the heartbeat endpoint. Additionally, the sender now logs warnings for failed heartbeats and includes the application type and Sentinel version in the heartbeat payload.
sentinel-transport/sentinel-transport-netty-http/src/main/java/com/alibaba/csp/sentinel/transport/heartbeat · medium confidence
Improve RocketMQ demo robustness and configuration
The RocketMQ integration demo now includes the Namesrv address in its constants, allowing the producer and consumer to connect to a remote broker rather than relying on defaults. The consumer code now explicitly handles the case where fetching message queues fails, preventing crashes, and adds a PMD suppression for the thread pool creation. Additionally, the producer wraps its send logic in a try-catch block to handle potential exceptions gracefully.
sentinel-demo/sentinel-demo-rocketmq · medium confidence
Improved HTTP command center and heartbeat reliability
The SimpleHttpCommandCenter now uses a thread-safe map for command handlers and ensures the background executor service is properly null-checked before shutdown, preventing potential NullPointerExceptions. Additionally, the heartbeat sender now validates the runtime port before attempting to send heartbeats, and the HTTP client enforces non-null charset parameters, making the transport layer more robust against configuration errors and initialization states.
sentinel-transport/sentinel-transport-simple-http · medium confidence
Improved HTTP server reliability and POST request handling
The HTTP server now automatically retries binding to an available port if the default port is unavailable, preventing application startup failures. Additionally, the server now supports parsing POST request bodies (both multipart and form-urlencoded), allowing commands to be sent via POST parameters rather than just query strings. A duplicate command registration check was also added to prevent overwriting existing handlers.
sentinel-transport/sentinel-transport-netty-http/src/main/java/com/alibaba/csp/sentinel/transport/command/netty · high confidence
Improved MetricFetcher reliability and thread management
The MetricFetcher component in the dashboard has been refactored to handle concurrent conditions and network failures more robustly. It now automatically removes dead or unhealthy machines and applications, preventing stale data from accumulating. Additionally, the internal thread pools have been converted to daemon threads to ensure they do not prevent the application from shutting down cleanly, and specific HTTP exceptions (SocketTimeoutException, ConnectException) are now logged with distinct messages for better diagnostics.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/metric · high confidence
Improved error handling during Sentinel initialization
The initialization process in Sentinel has been updated to prevent the application from terminating unexpectedly. Previously, if an error occurred during the execution of init functions, the system would call System.exit(-1), effectively crashing the JVM. This change ensures that both Exception and Error conditions are caught, logged as warnings or errors, and do not trigger a system exit. Additionally, the mechanism for loading init functions has been updated to use a custom SpiLoader instead of the standard Java ServiceLoader, and logging statements have been optimized to use placeholders for better performance.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/init · high confidence
Improved gRPC client and server interceptor metrics and lifecycle management
The Sentinel gRPC adapters for both client and server sides now use asynchronous entry creation and explicit entry exit to ensure metrics are accurately recorded even when exceptions or cancellations occur. This change fixes incorrect response time and exception tracing by using \Tracer.traceEntry\ for error conditions and guaranteeing \entry.exit()\ is called, preventing resource leaks and ensuring consistent monitoring data.
sentinel-adapter/sentinel-grpc-adapter/src/main · high confidence
Improved thread management and logging in Netty HTTP command center
The Netty HTTP command center now uses a named, daemon thread factory for its single-thread executor, improving thread identification and lifecycle management. Additionally, the startup error handling was changed from a fatal exit to a warning log, preventing the application from terminating unexpectedly if the server fails to start.
sentinel-transport/sentinel-transport-netty-http/src/main/java/com/alibaba/csp/sentinel/transport/command · medium confidence
Improved time utility performance and added configuration utilities
The TimeUtil class was refactored to adaptively switch between idle and running states based on QPS load, improving performance under varying conditions. Additionally, new utility classes were introduced: AssertUtil for argument validation, ConfigUtil for loading properties from files or classpath with custom charset support, VersionUtil for parsing version strings, and StringUtil.capitalize() for string manipulation.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/util · high confidence
Introduce SPI-based token client abstraction
A new \ClusterTokenClient\ interface and \TokenClientProvider\ utility are added to the cluster client package. The provider uses the SPI mechanism to load the first available implementation of \ClusterTokenClient\, enabling pluggable token client implementations. If no implementation is found, the cluster client mode remains inactive.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/cluster/client · high confidence
Introduce prioritized entry support and resource classification in the slot chain
The Sentinel core now supports prioritized entries, allowing users to mark specific requests as high-priority within the processing chain. Additionally, resources can now be classified by type, enabling more granular control and monitoring. These changes modify the internal slot chain mechanism to pass priority and resource type information through the entry and exit callbacks, affecting how requests are processed and tracked.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slotchain · medium confidence
Introduces callback-based architecture for statistic slot events
The StatisticSlot now uses a new StatisticSlotCallbackRegistry to dispatch pass, block, and exit events to registered handlers. This allows external components to react to entry and exit events without modifying the core StatisticSlot code, enabling more flexible monitoring and metrics collection.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic · high confidence
Modernizes time formatting and removes legacy Unsafe usage in EagleEye logging
The EagleEye logging subsystem now uses the standard Java 8 java.time API (DateTimeFormatter) for formatting timestamps, replacing the previous ThreadLocal-based FastDateFormat approach. This change also corrects the default timezone for date formatting to use the system default rather than a hardcoded GMT+8 offset. Additionally, unused code related to sun.misc.Unsafe has been removed from the core utilities, and the implementation switches from a custom LongAdder to the standard java.util.concurrent.atomic.LongAdder.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/eagleeye · high confidence
New throttling controller and refactored rate limiters
A new ThrottlingController is introduced to provide precise request throttling using nanosecond or millisecond precision, allowing requests to wait in a queue for a configurable timeout. The legacy PaceController is renamed to WarmUpRateLimiterController and refactored to extend WarmUpController, which now implements the TrafficShapingController interface. The DefaultController is also updated to implement TrafficShapingController, adding support for prioritized requests that can wait for a specified time before passing, and the default value for avgUsedTokens is changed to zero.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/controller · high confidence
NodeSelectorSlot supports prioritized entry and uses direct node construction
The NodeSelectorSlot now accepts a 'prioritized' boolean flag in its entry method, enabling prioritized entry support. Internally, the slot constructs DefaultNode instances directly instead of using Env.nodeBuilder, and the node map is now volatile for thread safety. These changes align the slot with the new SPI-based slot chain builder and support prioritized processing order.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/nodeselector · medium confidence
Property update methods now return status
The \updateValue\ method in \SentinelProperty\ and its implementations (\DynamicSentinelProperty\, \NoOpSentinelProperty\) now return a boolean indicating whether the value was actually updated. This change, which also replaces the listener set with a thread-safe \CopyOnWriteArraySet\ to fix a race condition, allows callers to determine if a property update resulted in a change.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/property · high confidence
Refactor Sentinel Dashboard repository layer and add gateway rule support
The dashboard's in-memory repository layer has been refactored to improve reliability and performance, including the addition of thread-safe locking in the metrics repository and the introduction of a new \MetricsRepository\ interface. The codebase has been reorganized by renaming the \com.taobao\ package to \com.alibaba\ and moving repository classes into a new \repository\ directory structure. Additionally, new in-memory stores for gateway API definitions and flow rules have been added to support managing gateway flow rules.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/repository · medium confidence
Refactor Sentinel Dashboard rule entities and support cluster mode
The Sentinel dashboard's rule entity classes have been refactored to support cluster mode and improve serialization. A new abstract base class, AbstractRuleEntity, is introduced to reduce code duplication across rule entities. FlowRuleEntity is updated to include cluster mode configuration (ClusterFlowConfig). DegradeRuleEntity gains new fields for minRequestAmount, slowRatioThreshold, and statIntervalMs. SystemRuleEntity is updated to track highestCpuUsage and renames avgLoad to highestSystemLoad. All entities now implement a generic toRule() method via the updated RuleEntity interface, and the package is renamed from com.taobao to com.alibaba.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity/rule · medium confidence
Refactor SentinelApiClient and introduce client-side exception classes
The SentinelApiClient class was rewritten to support HTTP POST requests for update operations, improving compatibility with older Sentinel client versions (1.6.0+) and supporting enhanced Content-Type headers for newer versions (1.7.1+). Additionally, new exception classes CommandNotFoundException and CommandFailedException were introduced in the dashboard client package to better handle command execution failures and errors during client communication.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/client · medium confidence
Refactor metric file reading and node data structure
The metric reading logic has been extracted from MetricSearcher into a new MetricsReader class, which handles reading metric data from log files. MetricNode has been updated to include new fields for classification, concurrency, and occupied pass QPS, and the serialization format has been extended to include these new fields. Additionally, the metric file naming convention has been standardized to include the application name and process ID, and the file matching logic has been updated to support the new naming pattern.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric · high confidence
Refactored Sentinel Dashboard controllers and added authentication and version APIs
The Sentinel Dashboard's controller layer has been refactored: all controllers were moved from the \view\ to the \controller\ package and renamed to follow a \\*Controller\ convention (e.g., \FlowController\ became \FlowControllerV1\). The package namespace was updated from \com.taobao\ to \com.alibaba\. A new \AuthController\ was added to handle login, logout, and session check endpoints, while a \VersionController\ was introduced to expose the dashboard version via a \/version\ API. Additionally, the \AppController\ was updated to support the removal of unhealthy or disconnected machines.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller · high confidence
Refactored authority rule checking logic into a dedicated checker
The authority rule validation logic has been extracted from the \AuthorityRule\ and \AuthorityRuleManager\ into a new \AuthorityRuleChecker\ class. This refactoring separates the core checking logic from the rule definition and management, simplifying the \AuthoritySlot\ to delegate to the new checker. Additionally, the \AuthorityException\ now carries the triggered \AuthorityRule\, providing better context about which rule was violated.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/authority · high confidence
Refactored circuit breaker implementation with new rule management and slot architecture
The circuit breaker mechanism has been refactored to use a new \DefaultCircuitBreakerSlot\ and \DefaultCircuitBreakerRuleManager\ for handling default rules, while the existing \DegradeSlot\ and \DegradeRuleManager\ have been updated to support the new \CircuitBreaker\ interface. This change introduces a more modular approach to circuit breaking, allowing for better separation of concerns between default and specific resource rules. The \DegradeRule\ class has been updated to support additional attributes like \minRequestAmount\ and \slowRatioThreshold\, and the \DegradeException\ now carries the triggered rule for better debugging and monitoring.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade · high confidence
Refactored circuit breaker implementation with new strategy support
The circuit breaker logic in sentinel-core has been refactored into a new hierarchy (AbstractCircuitBreaker, ExceptionCircuitBreaker, ResponseTimeCircuitBreaker) with a dedicated CircuitBreakerStrategy enum supporting SLOW\_REQUEST\_RATIO, ERROR\_RATIO, and ERROR\_COUNT. This change ensures that requests are correctly blocked when error or slow-request thresholds reach 100% (fixing issues \#1779 and \#1856) and resolves a bug where the circuit breaker would not recover from the half-open state when requests were blocked by other rules (fixing \#1645).
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/degrade/circuitbreaker · medium confidence
Refactored data source hierarchy and introduced file-based read/write implementations
The data source API has been refactored to separate read and write concerns. The generic \DataSource\ interface has been split into \ReadableDataSource\ and \WritableDataSource\ interfaces. A new \FileWritableDataSource\ implementation has been added to support writing configuration to local files. Additionally, a \FileInJarReadableDataSource\ has been introduced to allow reading configuration files packaged inside JARs. The \ConfigParser\ interface was renamed to \Converter\ and its method \parse\ to \convert\ to better reflect its purpose.
sentinel-extension/sentinel-datasource-extension · high confidence
Refactored flow control logic into a dedicated checker and introduced cluster mode configuration
The flow control logic has been refactored to improve code reuse and support cluster mode. A new \FlowRuleChecker\ class now encapsulates the rule checking logic, separating it from the \FlowSlot\. A new \ClusterFlowConfig\ class has been added to hold configuration for cluster mode, including fields for \flowId\, \thresholdType\, \strategy\, \sampleCount\, \windowIntervalMs\, \resourceTimeout\, and others. The \FlowRule\ class now includes a \clusterConfig\ field and an \isClusterMode\ flag. The \FlowRuleManager\ has been updated to use a \RuleManager\ for storing rules and to support sorting and deduplication of rules. Additionally, the \FlowSlot\ now accepts a \FlowRuleChecker\ instance, allowing for better testability and separation of concerns.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block/flow · high confidence
Refactored metric statistics with support for priority-based request handling
The metric collection subsystem has been refactored to support an 'occupy' mechanism for future buckets, enabling priority-based request handling where high-priority requests can borrow tokens from future windows. This is implemented via new classes like \OccupiableBucketLeapArray\ and \FutureBucketLeapArray\, which replace the previous \WindowLeapArray\ with a \MetricBucket\-based approach. The \ArrayMetric\ class now conditionally instantiates these arrays based on the \enableOccupy\ flag, and the \Metric\ interface has been extended with methods like \addOccupiedPass\, \addWaiting\, and \occupiedPass\ to track and manage these priority-based metrics.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/metric · high confidence
Refactored sliding window statistic data structures for improved concurrency and clarity
The core sliding window implementation in Sentinel has been refactored to use the JDK's native \LongAdder\ instead of a custom \LongAdder\ class, reducing code duplication and improving thread-safe counter performance. The \LeapArray\ and \WindowWrap\ classes were restructured: \LeapArray\ now pre-calculates time indices and uses a conditional \ReentrantLock\ to safely reset deprecated buckets, while \WindowWrap\ was renamed from \windowLength\ to \windowLengthInMs\ and gained a \isTimeInWindow\ check. These changes improve the reliability and readability of the statistic module's internal data structures.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/base · medium confidence
Refine metrics and add gateway rule entities
The dashboard's data model for metrics has been refactored: the \MetricEntity\ class now uses \passQps\, \blockQps\, and \exceptionQps\ fields, replacing the previous \passedQps\, \blockedQps\, and \exception\ fields. Additionally, new entity classes (\SentinelVersion\, \ApiDefinitionEntity\, \ApiPredicateItemEntity\, \GatewayFlowRuleEntity\, and \GatewayParamFlowItemEntity\) have been introduced to support managing gateway flow rules and API definitions.
sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/datasource/entity · high confidence
Removed deprecated degradation rule management endpoints
The Sentinel Dashboard has removed the \HttpHelper\ utility class and the \DegradeController\ REST endpoints. This eliminates the legacy mechanism for fetching, creating, updating, and deleting degradation rules via the dashboard, signaling a shift away from in-memory rule storage and direct HTTP-based rule synchronization with clients.
sentinel-dashboard/src/main/java/com/taobao · high confidence
SPI registration for Sentinel core components
The Sentinel core registers its default processing slots, the default slot chain builder, and the metric callback initialization function via Java SPI mechanism. This enables automatic discovery and instantiation of these components without manual configuration.
sentinel-core/src/main/resources · high confidence
Sidebar menu and app list enhancements
The dashboard sidebar now displays the number of healthy machines for each application (e.g., 2/5) and supports filtering by app name using a new object-based filter. For gateway applications, the sidebar shows 'Request Link' and 'API Management' options, while non-gateway apps display 'Hotspot Rules', 'Authorization Rules', and 'Cluster Flow Control'. The sidebar also collapses other app bars when one is clicked, and the search functionality has been updated to use strict equality checks.
sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar · high confidence
Support for customized block page HTTP status codes
The Sentinel web servlet adapter now allows users to configure the HTTP status code returned when a request is blocked. The \FilterUtil\ class has been updated to read the configured HTTP status from \WebServletConfig\ and apply it to the response, replacing the previous hardcoded behavior. This enables more precise control over the HTTP response codes for blocked requests, improving integration with existing error handling logic.
sentinel-adapter/sentinel-web-servlet/src/main/java/com/alibaba/csp/sentinel/adapter/servlet/util · high confidence
Support for prioritized entry processing and cluster node reset
The ClusterBuilderSlot now supports prioritized entry processing, allowing the system to handle specific entries with higher precedence. Additionally, a new resetClusterNodes method has been added, enabling the reset of all ClusterNodes, which is necessary when interval or sample count properties change. The slot also now uses a more efficient HashMap initialization and includes a volatile modifier for the clusterNode field to ensure thread safety in double-checked locking.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/clusterbuilder · medium confidence
Support for regex-based resource matching and exception-based degradation
Sentinel now supports matching resource rules via regular expressions, allowing a single rule to apply to multiple resources matching a pattern. The rule management has been refactored with a new RuleManager that caches regex matches for performance, and AbstractRule gains an 'id' and 'regex' flag. Additionally, circuit breaking can now be triggered by exception count (DEGRADE\_GRADE\_EXCEPTION\_COUNT) in addition to the existing RT and exception ratio strategies. BlockException now carries the triggered rule, and the Rule interface simplifies to focus on resource identification.
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/block · high confidence
Updated Spring Boot configuration keys and added authentication settings
The application.properties file was updated to use the newer Spring Boot 2.x/3.x property prefixes (e.g., server.servlet.encoding instead of spring.http.encoding) and replaced the deprecated logging.file key with logging.file.name. Additionally, default authentication credentials (username/password) and session cookie naming were added to the configuration, alongside exclusion rules for the auth filter.
sentinel-dashboard/src/main/resources · high confidence
Updated degrade demo classes to use the new CircuitBreaker API
The \ExceptionRatioDegradeDemo\ and \RtDegradeDemo\ classes have been renamed to \ExceptionRatioCircuitBreakerDemo\ and \SlowRatioCircuitBreakerDemo\ respectively. These demos now utilize the \CircuitBreakerStrategy\ and \EventObserverRegistry\ APIs to configure and observe circuit breaker states, replacing the previous \RuleConstant\ and \DegradeRule\ configuration patterns.
sentinel-demo/sentinel-demo-basic/src/main/java/com/alibaba/csp/sentinel/demo/degrade · high confidence
Updated file-based rule demos to use new data source interfaces and add JAR file support
The file-based rule demos in sentinel-demo-dynamic-file-rule have been updated to use the new ReadableDataSource and Converter interfaces instead of the legacy DataSource and ConfigParser. The FileDataSourceDemo now uses Converter lambdas for parsing and URL-decodes resource paths to handle special characters. Additionally, a new JarFileDataSourceDemo was added to demonstrate reading configuration files packaged inside a JAR using FileInJarReadableDataSource.
sentinel-demo/sentinel-demo-dynamic-file-rule · medium confidence
Test coverage
Added Sentinel entry benchmark tests; Added integration tests for the new Sentinel Reactor adapter; Added test coverage for Sentinel Dashboard rule providers and publishers; Added test coverage for Sentinel cluster server components; Added tests for InMemoryMetricsRepository concurrency and expiration; Added tests for Sentinel Web Servlet filter behavior; Added tests for Sentinel version parsing and entity serialization; Added tests for ZooKeeper data source and authentication; Added tests for the Apache Dubbo adapter; Added unit tests for Sentinel Dashboard configuration classes; Added unit tests for SentinelApiClient POST request handling; Added unit tests for cluster client codec components; Added unit tests for cluster flow control and concurrency management; Added unit tests for gateway API and flow rule controllers; Added unit tests for parameter flow control components; Added unit tests for the Netty HTTP transport module; Added unit tests for the Spring Cloud Gateway adapter; Updated gRPC adapter test cases.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 52 → 49 (-3.3)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 83 → 89 (+6.5)
- Architecture 100 → 95 (-5.4)
- Maturity 59 → 59 (+0.2)
- Readiness 63 → 60 (-2.1)
- Security 59 → 69 (+9.1)
- Accessibility 40 → 31 (-8.7)
Resolved (189)
- Concentrated knowledge decay
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (sentinel-adapter/sentinel-dubbo-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/dubbo/SentinelDubboConsumerFilter.java)
- Duplicated block (10 lines × 2) (sentinel-adapter/sentinel-spring-webmvc-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/AbstractSentinelInterceptor.java)
- Duplicated block (10 lines × 2) (sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/metric/MetricSearcher.java)
- Duplicated block (10 lines × 2) (sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/DegradeController.java)
- Duplicated block (10 lines × 2) (sentinel-demo/sentinel-demo-apache-dubbo/src/main/java/com/alibaba/csp/sentinel/demo/apache/dubbo/FooConsumerBootstrap.java)
- Duplicated block (10 lines × 3) (sentinel-adapter/sentinel-apache-dubbo-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/dubbo/DubboUtils.java)
- Duplicated block (10 lines × 3) (sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/controller/gateway/GatewayApiController.java)
- Duplicated block (10 lines × 5) (sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/client/SentinelApiClient.java)
- Duplicated block (11 lines × 2) (sentinel-adapter/sentinel-apache-dubbo3-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/dubbo3/SentinelDubboConsumerFilter.java)
- Duplicated block (11 lines × 2) (sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/command/UpdateGatewayApiDefinitionGroupCommandHandler.java)
- Duplicated block (11 lines × 2) (sentinel-adapter/sentinel-spring-webmvc-v6x-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc_v6x/config/WebServletLocalConfig.java)
- …and 169 more
New (397)
- ClassTooLong: SentinelApiClient (sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/client/SentinelApiClient.java)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Critical CVE: [GHSA redacted] (sentinel-dashboard/src/main/webapp/resources/package-lock.json)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Documentation: no project overview (README.md)
- Dormant codebase
- Duplicated block (10 lines × 2) (sentinel-adapter/sentinel-apache-dubbo-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/dubbo/DubboUtils.java)
- Duplicated block (10 lines × 2) (sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/rule/GatewayRuleManager.java)
- Duplicated block (10 lines × 2) (sentinel-adapter/sentinel-spring-cloud-gateway-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/sc/callback/DefaultBlockRequestHandler.java)
- Duplicated block (10 lines × 2) (sentinel-adapter/sentinel-spring-webmvc-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/AbstractSentinelInterceptor.java)
- Duplicated block (10 lines × 2) (sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/ClusterFlowChecker.java)
- Duplicated block (10 lines × 2) (sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/rule/ClusterFlowRuleManager.java)
- Duplicated block (10 lines × 2) (sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/rule/ClusterFlowRuleManager.java)
- Duplicated block (10 lines × 2) (sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/statistic/metric/ClusterMetric.java)
- Duplicated block (10 lines × 2) (sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/config/ServerFlowConfig.java)
- …and 377 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
alibaba/Sentinel was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit a3f40ba8e900c8489bd520274739f17235a7721c — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-ae95d6cad036.