Skip to content

Commit f2cf3c2

Browse files
committed
release v1.2.1-x
2 parents 6a9970d + 9c916e5 commit f2cf3c2

File tree

7 files changed

+28
-14
lines changed

7 files changed

+28
-14
lines changed

core/src/main/java/org/dromara/dynamictp/core/notifier/chain/filter/SilentCheckFilter.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,13 @@ public void doFilter(BaseNotifyCtx context, Invoker<BaseNotifyCtx> nextInvoker)
5454
}
5555

5656
protected boolean isSilent(BaseNotifyCtx context) {
57-
ExecutorWrapper executorWrapper = context.getExecutorWrapper();
57+
// silence period <= 0 indicates that no silence check will be conducted.
5858
NotifyItem notifyItem = context.getNotifyItem();
59+
if (notifyItem.getSilencePeriod() <= 0) {
60+
return false;
61+
}
62+
63+
ExecutorWrapper executorWrapper = context.getExecutorWrapper();
5964
String lockKey = executorWrapper.getThreadPoolName();
6065
Lock lock = LOCK_MAP.computeIfAbsent(lockKey, k -> new ReentrantLock());
6166

dependencies/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<url>https://github.com/yanhom1314/dynamic-tp</url>
1313

1414
<properties>
15-
<revision>1.2.1-beta-x</revision>
15+
<revision>1.2.1-x</revision>
1616
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1717

1818
<maven.compiler.source>17</maven.compiler.source>

extension/extension-limiter-redis/src/main/java/org/dromara/dynamictp/extension/limiter/redis/ratelimiter/RedisRateLimiter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ public interface RedisRateLimiter<T> {
5656
String[] getArgs(String key, long windowSize, int limit);
5757

5858
/**
59-
* check.
59+
* Acquires permission of an invocation only if it is available at the time of invoking.
6060
*
6161
* @param name the key
6262
* @param interval the interval
6363
* @param limit the limit
6464
* @return the result
6565
*/
66-
boolean check(String name, long interval, int limit);
66+
boolean tryPass(String name, long interval, int limit);
6767

6868
}

extension/extension-limiter-redis/src/main/java/org/dromara/dynamictp/extension/limiter/redis/ratelimiter/RedisRateLimiterNotifyFilter.java

+16-7
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.dromara.dynamictp.extension.limiter.redis.ratelimiter;
1919

2020
import lombok.extern.slf4j.Slf4j;
21+
import org.dromara.dynamictp.common.entity.NotifyItem;
2122
import org.dromara.dynamictp.common.pattern.filter.Invoker;
2223
import org.dromara.dynamictp.core.notifier.chain.filter.NotifyFilter;
2324
import org.dromara.dynamictp.core.notifier.context.BaseNotifyCtx;
@@ -45,13 +46,21 @@ public int getOrder() {
4546
}
4647

4748
@Override
48-
public void doFilter(BaseNotifyCtx context, Invoker<BaseNotifyCtx> nextFilter) {
49-
String notifyName = context.getExecutorWrapper().getThreadPoolName() + "#" + context.getNotifyItemEnum().getValue();
50-
int silencePeriod = context.getNotifyItem().getSilencePeriod();
51-
int clusterLimit = context.getNotifyItem().getClusterLimit();
52-
boolean checkResult = redisScriptRateLimiter.check(notifyName, silencePeriod, clusterLimit);
53-
if (checkResult) {
54-
nextFilter.invoke(context);
49+
public void doFilter(BaseNotifyCtx context, Invoker<BaseNotifyCtx> nextInvoker) {
50+
if (tryPass(context)) {
51+
nextInvoker.invoke(context);
5552
}
5653
}
54+
55+
private boolean tryPass(BaseNotifyCtx context) {
56+
// silence period <= 0 indicates that no rate limit check is required.
57+
NotifyItem notifyItem = context.getNotifyItem();
58+
if (notifyItem.getSilencePeriod() <= 0) {
59+
return true;
60+
}
61+
String notifyName = context.getExecutorWrapper().getThreadPoolName() + "#" + context.getNotifyItemEnum().getValue();
62+
int silencePeriod = notifyItem.getSilencePeriod();
63+
int clusterLimit = notifyItem.getClusterLimit();
64+
return redisScriptRateLimiter.tryPass(notifyName, silencePeriod, clusterLimit);
65+
}
5766
}

extension/extension-limiter-redis/src/main/java/org/dromara/dynamictp/extension/limiter/redis/ratelimiter/SlidingWindowRateLimiter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public String[] getArgs(String key, long windowSize, int limit) {
6262
}
6363

6464
@Override
65-
public boolean check(String name, long interval, int limit) {
65+
public boolean tryPass(String name, long interval, int limit) {
6666
try {
6767
val res = isAllowed(name, interval, limit);
6868
if (CollectionUtils.isEmpty(res)) {

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<url>https://github.com/yanhom1314/dynamic-tp</url>
1616

1717
<properties>
18-
<revision>1.2.1-beta-x</revision>
18+
<revision>1.2.1-x</revision>
1919
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2020

2121
<maven.compiler.source>17</maven.compiler.source>

test/test-extension/test-extension-limiter-redis/src/test/java/org/dromara/dynamictp/test/extension/limiter/redis/RedisRateLimiterTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class RedisRateLimiterTest {
4343
void testRedisRateLimiterCheck() throws InterruptedException {
4444
for (int i = 0; i < 6; i++) {
4545
TimeUnit.SECONDS.sleep(1);
46-
val res = redisScriptRateLimiter.check("rate-limiter", 120, 5);
46+
val res = redisScriptRateLimiter.tryPass("rate-limiter", 120, 5);
4747
System.out.println(res);
4848
}
4949
}

0 commit comments

Comments
 (0)