Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
2eb6c68
Group third-party dependencies in sentinel POMs
mercyblitz Jun 5, 2026
7ce916a
Remove optional flag from redis dependency
mercyblitz Jun 5, 2026
3158398
Rename plugin Constants/classes and update deps
mercyblitz Jun 5, 2026
baeb335
Remove RedisContextConfig test class
mercyblitz Jun 5, 2026
fd3e649
Bump Microsphere Spring Cloud to 0.1.21
mercyblitz Jul 2, 2026
643a2ce
Bump microsphere-alibaba-druid to 0.1.24
mercyblitz Jul 2, 2026
17e7d97
Bump microsphere-mybatis to 0.1.12
mercyblitz Jul 2, 2026
8166e3e
Bump microsphere-redis to 0.1.9
mercyblitz Jul 2, 2026
63e4075
Downgrade Alibaba Druid BOM version
mercyblitz Jul 2, 2026
7a031e7
Bump microsphere-hibernate to 0.1.6
mercyblitz Jul 2, 2026
8fc8cff
Refactor Sentinel enablement conditions
mercyblitz Jul 2, 2026
11c6974
Reorder imports across Sentinel modules
mercyblitz Jul 2, 2026
812f81e
Bump microsphere-redis to 0.1.10
mercyblitz Jul 3, 2026
6a4396c
Import shared enabled property constant
mercyblitz Jul 3, 2026
71c253f
Fix typo in Sentinel conditional annotation
mercyblitz Jul 3, 2026
e3cce4b
Split Sentinel auto-config by integration module
mercyblitz Jul 3, 2026
6b6b34a
Add RedisAutoConfiguration Javadoc reference
mercyblitz Jul 4, 2026
5a97574
Add Sentinel web auto-configuration support
mercyblitz Jul 4, 2026
bb43caf
Add Druid auto-config condition tests
mercyblitz Jul 4, 2026
c57b055
Add MyBatis auto-config tests and base test class
mercyblitz Jul 4, 2026
aa06186
Clarify MyBatis plugin enable property docs
mercyblitz Jul 4, 2026
b839a7d
Remove redundant MyBatis test helpers
mercyblitz Jul 4, 2026
bc518e3
Use base autoConfig class in auto-config tests
mercyblitz Jul 4, 2026
733ecc8
Clarify Redis enabled property JavaDoc
mercyblitz Jul 4, 2026
efbca36
Scope Redis availability to auto-config class
mercyblitz Jul 4, 2026
b43e3d1
Decouple Redis auto-config from interceptor enable
mercyblitz Jul 4, 2026
9dbbee2
Rename Spring Web auto-config and tighten tests
mercyblitz Jul 4, 2026
9efbb7f
Use shared Redis test config
mercyblitz Jul 4, 2026
258a9fc
Normalize Javadoc spacing in auto-configs
mercyblitz Jul 4, 2026
6ef3d9a
Auto-install Sentinel DB integration plugins
mercyblitz Jul 5, 2026
f064753
Fix plugin init and Sentinel context cleanup
mercyblitz Jul 5, 2026
d2172d0
Assert Sentinel context node in Hibernate test
mercyblitz Jul 5, 2026
9e2eb80
Add Sentinel context assertion in MyBatis test
mercyblitz Jul 5, 2026
b48337a
Add post-test Sentinel context assertion
mercyblitz Jul 5, 2026
6c7c603
Refactor Redis tests to shared test config
mercyblitz Jul 5, 2026
03e5d6c
Add post-check for Sentinel context nodes
mercyblitz Jul 5, 2026
564e2b0
Add spring-cloud module for Sentinel integration
mercyblitz Jul 5, 2026
8933e4a
Fix Hibernate core groupId in spring-cloud module
mercyblitz Jul 5, 2026
41fede5
Use explicit cast in Druid filter test
mercyblitz Jul 5, 2026
e5632c2
Add Sentinel Spring Cloud auto-configuration
mercyblitz Jul 5, 2026
53f2e81
Clarify Sentinel availability annotation docs
mercyblitz Jul 5, 2026
ccc910d
Bump Microsphere BOM and parent versions
mercyblitz Jul 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions microsphere-alibaba-sentinel-commons/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@
<artifactId>microsphere-java-core</artifactId>
</dependency>

<!-- Microsphere Annotation Processor -->
<dependency>
<groupId>io.github.microsphere-projects</groupId>
<artifactId>microsphere-annotation-processor</artifactId>
<optional>true</optional>
</dependency>

<!-- Alibaba Sentinel -->
<dependency>
<groupId>com.alibaba.csp</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@

import com.alibaba.csp.sentinel.EntryType;
import com.alibaba.csp.sentinel.ResourceTypeConstants;
import io.microsphere.annotation.Nonnull;
import io.microsphere.alibaba.sentinel.common.constants.SentinelConstants;
import io.microsphere.alibaba.sentinel.common.util.SentinelUtils;
import io.microsphere.annotation.Nonnull;

import static io.microsphere.alibaba.sentinel.common.SentinelPluginRepository.INSTANCE;
import static io.microsphere.alibaba.sentinel.common.util.SentinelUtils.getDefaultContextName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
import static com.alibaba.csp.sentinel.Tracer.traceEntry;
import static com.alibaba.csp.sentinel.context.ContextUtil.enter;
import static com.alibaba.csp.sentinel.context.ContextUtil.exit;
import static io.microsphere.logging.LoggerFactory.getLogger;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.DEFAULT_CONTEXT_NAME;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.DEFAULT_ORIGIN;
import static io.microsphere.logging.LoggerFactory.getLogger;
import static io.microsphere.util.StringUtils.isBlank;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ public SimpleSentinelPlugin(String name, String contextName, String origin, int
super(name, contextName, origin, resourceType, trafficType);
}

public SimpleSentinelPlugin(String name, String contextName, String origin, int resourceType, EntryType trafficType, boolean autoRegisterMBean) {
super(name, contextName, origin, resourceType, trafficType, autoRegisterMBean);
public SimpleSentinelPlugin(String name, String contextName, String origin, int resourceType, EntryType trafficType,
boolean autoInstalled) {
super(name, contextName, origin, resourceType, trafficType, autoInstalled);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@
package io.microsphere.alibaba.sentinel.common.constants;

import io.microsphere.alibaba.sentinel.common.SentinelContext;
import io.microsphere.annotation.ConfigurationProperty;
import io.microsphere.constants.PropertyConstants;

import static io.microsphere.annotation.ConfigurationProperty.APPLICATION_SOURCE;
import static io.microsphere.annotation.ConfigurationProperty.SYSTEM_PROPERTIES_SOURCE;

/**
* The constants of Sentinel
Expand Down Expand Up @@ -52,6 +57,24 @@ public interface SentinelConstants {
*/
String PROPERTY_NAME_PREFIX = "microsphere.sentinel.";

/**
* The default value of enabled : "true"
*/
String ENABLED_PROPERTY_VALUE = "true";

/**
* The Property Name of enabled : "microsphere.sentinel.enabled"
*/
@ConfigurationProperty(
type = boolean.class,
defaultValue = ENABLED_PROPERTY_VALUE,
source = {
SYSTEM_PROPERTIES_SOURCE,
APPLICATION_SOURCE
}
)
String ENABLED_PROPERTY_NAME = PROPERTY_NAME_PREFIX + PropertyConstants.ENABLED_PROPERTY_NAME;

/**
* The attribute name of {@link SentinelContext}
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import com.alibaba.csp.sentinel.ResourceTypeConstants;
import com.alibaba.csp.sentinel.concurrent.NamedThreadFactory;
import com.alibaba.csp.sentinel.context.ContextUtil;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import io.microsphere.annotation.Nonnull;

import java.lang.invoke.MethodHandle;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Map;
Expand All @@ -13,16 +15,20 @@
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadFactory;

import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.DEFAULT_CONTEXT_NAME_PATTERN;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.FLOW_DATA_ID_PATTERN;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.PROPERTY_NAME_PREFIX;
import static io.microsphere.collection.MapUtils.newFixedHashMap;
import static io.microsphere.concurrent.ExecutorUtils.shutdownOnExit;
import static io.microsphere.constants.PropertyConstants.ENABLED_PROPERTY_NAME;
import static io.microsphere.constants.SymbolConstants.DOT;
import static io.microsphere.invoke.MethodHandleUtils.findStatic;
import static io.microsphere.lang.function.ThrowableAction.execute;
import static io.microsphere.reflect.FieldUtils.getFieldValue;
import static io.microsphere.reflect.FieldUtils.getStaticFieldValue;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.DEFAULT_CONTEXT_NAME_PATTERN;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.FLOW_DATA_ID_PATTERN;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.PROPERTY_NAME_PREFIX;
import static io.microsphere.text.FormatUtils.format;
import static io.microsphere.util.ClassUtils.getSimpleName;
import static io.microsphere.util.ShutdownHookUtils.addShutdownHookCallback;
import static io.microsphere.util.SystemUtils.getSystemProperty;
import static java.lang.reflect.Modifier.isStatic;
import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
Expand All @@ -37,8 +43,20 @@ public abstract class SentinelUtils {

private static final Map<Integer, String> resourceTypeToLabelMapping = initResourceTypeToLabelMapping();

/**
* The {@link MethodHandle} of {@link ContextUtil#resetContextMap()}
*
* @see ContextUtil#resetContextMap()
*/
private static final MethodHandle resetContextMapMethodHandle = findStatic(ContextUtil.class, "resetContextMap");

private static volatile ScheduledExecutorService sentinelMetricsTaskExecutor;

static {
shutdownOnExit(sentinelMetricsTaskExecutor);
addShutdownHookCallback(() -> execute(SentinelUtils::resetContextMap));
}

private static Map<Integer, String> initResourceTypeToLabelMapping() {
Field[] fields = ResourceTypeConstants.class.getFields();
Map<Integer, String> resourceTypeToLabelMapping = newFixedHashMap(fields.length);
Expand Down Expand Up @@ -153,6 +171,16 @@ public static ScheduledExecutorService getSentinelMetricsTaskExecutor() {
return scheduledExecutorService;
}

/**
* Reset the {@link ContextUtil#resetContextMap() context map} of Sentinel
*
* @throws Throwable if any exception occurred
* @see ContextUtil#resetContextMap()
*/
public static void resetContextMap() throws Throwable {
resetContextMapMethodHandle.invokeExact();
}

static ScheduledExecutorService getSentinelMetricsTaskExecutor(ScheduledExecutorService defaultScheduledExecutorService) {
return defaultScheduledExecutorService == null ?
newSingleThreadScheduledExecutor(new NamedThreadFactory("sentinel-metrics-task", true)) :
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@

package io.microsphere.alibaba.sentinel.jmx;

import io.microsphere.lang.Prioritized;
import io.microsphere.lang.function.ThrowableBiFunction;
import io.microsphere.alibaba.sentinel.common.SentinelPlugin;
import io.microsphere.alibaba.sentinel.common.SentinelPluginRepository;
import io.microsphere.alibaba.sentinel.common.SimpleSentinelPluginRepository;
import io.microsphere.lang.Prioritized;
import io.microsphere.lang.function.ThrowableBiFunction;

import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.StandardMBean;
import java.util.Collection;
import java.util.Set;

import static io.microsphere.lang.function.ThrowableSupplier.execute;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.DEFAULT_PRIORITY;
import static io.microsphere.lang.function.ThrowableSupplier.execute;
import static io.microsphere.text.FormatUtils.format;
import static java.lang.management.ManagementFactory.getPlatformMBeanServer;
import static java.util.Collections.emptyList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import static com.alibaba.csp.sentinel.ResourceTypeConstants.COMMON_DB_SQL;
import static com.alibaba.csp.sentinel.ResourceTypeConstants.COMMON_RPC;
import static com.alibaba.csp.sentinel.ResourceTypeConstants.COMMON_WEB;
import static io.microsphere.reflect.MethodUtils.findMethod;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.DEFAULT_CONTEXT_NAME;
import static io.microsphere.alibaba.sentinel.common.util.SentinelUtils.buildResourceName;
import static io.microsphere.alibaba.sentinel.common.util.SentinelUtils.findSentinelMetricsTaskExecutor;
Expand All @@ -19,6 +18,8 @@
import static io.microsphere.alibaba.sentinel.common.util.SentinelUtils.getResourceTypeAsString;
import static io.microsphere.alibaba.sentinel.common.util.SentinelUtils.getSentinelMetricsTaskExecutor;
import static io.microsphere.alibaba.sentinel.common.util.SentinelUtils.isPluginEnabled;
import static io.microsphere.reflect.MethodUtils.findMethod;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
Expand Down Expand Up @@ -82,4 +83,9 @@ void testGetSentinelMetricsTaskExecutor() {
assertSame(findSentinelMetricsTaskExecutor(), getSentinelMetricsTaskExecutor());
assertNotEquals(findSentinelMetricsTaskExecutor(), getSentinelMetricsTaskExecutor(null));
}

@Test
void testResetContextMap() {
assertDoesNotThrow(SentinelUtils::resetContextMap);
}
}
10 changes: 5 additions & 5 deletions microsphere-alibaba-sentinel-parent/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@

<properties>
<!-- BOM versions -->
<microsphere-spring-cloud.version>0.1.16</microsphere-spring-cloud.version>
<microsphere-alibaba-druid.version>0.1.16</microsphere-alibaba-druid.version>
<microsphere-mybatis.version>0.1.9</microsphere-mybatis.version>
<microsphere-hibernate.version>0.1.5</microsphere-hibernate.version>
<microsphere-redis.version>0.1.8</microsphere-redis.version>
<microsphere-spring-cloud.version>0.1.23</microsphere-spring-cloud.version>
<microsphere-alibaba-druid.version>0.1.18</microsphere-alibaba-druid.version>
<microsphere-mybatis.version>0.1.13</microsphere-mybatis.version>
<microsphere-hibernate.version>0.1.7</microsphere-hibernate.version>
<microsphere-redis.version>0.1.11</microsphere-redis.version>
<!-- Third-party versions -->
<sentinel.version>1.8.10</sentinel.version>
<fastjson.version>2.0.62</fastjson.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@

<dependencies>

<!-- Microsphere Annotation Processor -->
<dependency>
<groupId>io.github.microsphere-projects</groupId>
<artifactId>microsphere-annotation-processor</artifactId>
<optional>true</optional>
</dependency>

<!-- Microsphere Sentinel Commons -->
<dependency>
<groupId>io.github.microsphere-projects</groupId>
Expand All @@ -34,10 +41,12 @@
<optional>true</optional>
</dependency>

<!-- Microsphere Annotation Processor -->
<!-- Third-Party Dependencies -->

<!-- Alibaba Sentinel -->
<dependency>
<groupId>io.github.microsphere-projects</groupId>
<artifactId>microsphere-annotation-processor</artifactId>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<optional>true</optional>
</dependency>

Expand All @@ -48,13 +57,6 @@
<optional>true</optional>
</dependency>

<!-- Alibaba Sentinel -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<optional>true</optional>
</dependency>

<!-- Testing -->
<dependency>
<groupId>org.junit.jupiter</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,18 @@
import io.microsphere.annotation.ConfigurationProperty;
import io.microsphere.constants.PropertyConstants;

import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.ENABLED_PROPERTY_VALUE;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.PROPERTY_NAME_PREFIX;
import static io.microsphere.annotation.ConfigurationProperty.SYSTEM_PROPERTIES_SOURCE;
import static io.microsphere.constants.SymbolConstants.DOT;
import static io.microsphere.alibaba.sentinel.common.constants.SentinelConstants.PROPERTY_NAME_PREFIX;

/**
* The interface to declare the constants of Alibaba Druid
* The interface to declare the constants of Sentinel x Alibaba Druid
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @since 1.0.0
*/
public interface Constants {
public interface SentinelAlibabaDruidConstants {

/**
* The plugin name of Sentinel x Alibaba Druid
Expand All @@ -48,11 +49,11 @@ public interface Constants {
String DEFAULT_ORIGIN = "Filter";

/**
* The property name of the plugin of Sentinel x Alibaba Druid enabled
* The property name of the plugin of Sentinel x Alibaba Druid enabled : "microsphere.sentinel.alibaba-druid.enabled"
*/
@ConfigurationProperty(
type = boolean.class,
defaultValue = "true",
defaultValue = ENABLED_PROPERTY_VALUE,
source = SYSTEM_PROPERTIES_SOURCE
)
String ENABLED_PROPERTY_NAME = PROPERTY_NAME_PREFIX + PLUGIN_NAME + DOT + PropertyConstants.ENABLED_PROPERTY_NAME;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package io.microsphere.alibaba.sentinel.alibaba.druid;

import com.alibaba.csp.sentinel.EntryType;
import com.alibaba.druid.filter.AutoLoad;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.filter.FilterAdapter;
import com.alibaba.druid.proxy.jdbc.StatementProxy;
Expand All @@ -30,9 +29,9 @@

import static com.alibaba.csp.sentinel.EntryType.IN;
import static com.alibaba.csp.sentinel.ResourceTypeConstants.COMMON_DB_SQL;
import static io.microsphere.alibaba.sentinel.alibaba.druid.Constants.DEFAULT_CONTEXT_NAME;
import static io.microsphere.alibaba.sentinel.alibaba.druid.Constants.DEFAULT_ORIGIN;
import static io.microsphere.alibaba.sentinel.alibaba.druid.Constants.PLUGIN_NAME;
import static io.microsphere.alibaba.sentinel.alibaba.druid.SentinelAlibabaDruidConstants.DEFAULT_CONTEXT_NAME;
import static io.microsphere.alibaba.sentinel.alibaba.druid.SentinelAlibabaDruidConstants.DEFAULT_ORIGIN;
import static io.microsphere.alibaba.sentinel.alibaba.druid.SentinelAlibabaDruidConstants.PLUGIN_NAME;
import static io.microsphere.alibaba.sentinel.common.SentinelContext.doInContext;
import static io.microsphere.alibaba.sentinel.common.SentinelPlugin.install;

Expand All @@ -44,18 +43,17 @@
* @see FilterAdapter
* @since 1.0.0
*/
@AutoLoad
public class SentinelDruidFilter extends AbstractStatementFilter implements SentinelPlugin {
public class SentinelAlibabaDruidFilter extends AbstractStatementFilter implements SentinelPlugin {

private final SentinelPlugin delegate;

private final SentinelOperations sentinelOperations;

public SentinelDruidFilter() {
public SentinelAlibabaDruidFilter() {
this(DEFAULT_CONTEXT_NAME, DEFAULT_ORIGIN);
}

public SentinelDruidFilter(String contextName, String origin) {
public SentinelAlibabaDruidFilter(String contextName, String origin) {
this.delegate = new SimpleSentinelPlugin(PLUGIN_NAME, contextName, origin, COMMON_DB_SQL, IN, false);
this.sentinelOperations = new SentinelTemplate(getResourceType(), getTrafficType());
install(this);
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
io.microsphere.alibaba.sentinel.alibaba.druid.SentinelDruidFilter
io.microsphere.alibaba.sentinel.alibaba.druid.SentinelAlibabaDruidFilter
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,21 @@

import org.junit.jupiter.api.Test;

import static io.microsphere.alibaba.sentinel.alibaba.druid.Constants.DEFAULT_CONTEXT_NAME;
import static io.microsphere.alibaba.sentinel.alibaba.druid.Constants.DEFAULT_ORIGIN;
import static io.microsphere.alibaba.sentinel.alibaba.druid.Constants.ENABLED_PROPERTY_NAME;
import static io.microsphere.alibaba.sentinel.alibaba.druid.Constants.PLUGIN_NAME;
import static io.microsphere.alibaba.sentinel.alibaba.druid.SentinelAlibabaDruidConstants.DEFAULT_CONTEXT_NAME;
import static io.microsphere.alibaba.sentinel.alibaba.druid.SentinelAlibabaDruidConstants.DEFAULT_ORIGIN;
import static io.microsphere.alibaba.sentinel.alibaba.druid.SentinelAlibabaDruidConstants.ENABLED_PROPERTY_NAME;
import static io.microsphere.alibaba.sentinel.alibaba.druid.SentinelAlibabaDruidConstants.PLUGIN_NAME;
import static io.microsphere.alibaba.sentinel.common.util.SentinelUtils.getPluginEnabledPropertyName;
import static org.junit.jupiter.api.Assertions.assertEquals;

/**
* {@link Constants} Test
* {@link SentinelAlibabaDruidConstants} Test
*
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @see Constants
* @see SentinelAlibabaDruidConstants
* @since 1.0.0
*/
class ConstantsTest {
class SentinelAlibabaDruidConstantsTest {

@Test
void testConstants() {
Expand Down
Loading
Loading