Skip to content

Commit 1cd7c3e

Browse files
committed
feat(cofig): optimize rate.limiter configuration parsing
1 parent 619a20f commit 1cd7c3e

3 files changed

Lines changed: 32 additions & 19 deletions

File tree

framework/src/main/java/org/tron/core/config/args/Args.java

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -973,9 +973,7 @@ public static void setParam(final String[] args, final String confFileName) {
973973
config.hasPath(Constant.RATE_LIMITER_GLOBAL_IP_QPS) ? config
974974
.getInt(Constant.RATE_LIMITER_GLOBAL_IP_QPS) : 10000;
975975

976-
PARAMETER.rateLimiterInitialization =
977-
config.hasPath(Constant.RATE_LIMITER) ? getRateLimiterFromConfig(config)
978-
: new RateLimiterInitialization();
976+
PARAMETER.rateLimiterInitialization = getRateLimiterFromConfig(config);
979977

980978
PARAMETER.changedDelegation =
981979
config.hasPath(Constant.COMMITTEE_CHANGED_DELEGATION) ? config
@@ -1214,21 +1212,22 @@ private static Account createAccount(final ConfigObject asset) {
12141212
}
12151213

12161214
private static RateLimiterInitialization getRateLimiterFromConfig(
1217-
final com.typesafe.config.Config config) {
1218-
1215+
final com.typesafe.config.Config config) {
12191216
RateLimiterInitialization initialization = new RateLimiterInitialization();
1220-
ArrayList<RateLimiterInitialization.HttpRateLimiterItem> list1 = config
1221-
.getObjectList(Constant.RATE_LIMITER_HTTP).stream()
1222-
.map(RateLimiterInitialization::createHttpItem)
1223-
.collect(Collectors.toCollection(ArrayList::new));
1224-
initialization.setHttpMap(list1);
1225-
1226-
ArrayList<RateLimiterInitialization.RpcRateLimiterItem> list2 = config
1227-
.getObjectList(Constant.RATE_LIMITER_RPC).stream()
1228-
.map(RateLimiterInitialization::createRpcItem)
1229-
.collect(Collectors.toCollection(ArrayList::new));
1230-
1231-
initialization.setRpcMap(list2);
1217+
if (config.hasPath(Constant.RATE_LIMITER_HTTP)) {
1218+
ArrayList<RateLimiterInitialization.HttpRateLimiterItem> list1 = config
1219+
.getObjectList(Constant.RATE_LIMITER_HTTP).stream()
1220+
.map(RateLimiterInitialization::createHttpItem)
1221+
.collect(Collectors.toCollection(ArrayList::new));
1222+
initialization.setHttpMap(list1);
1223+
}
1224+
if (config.hasPath(Constant.RATE_LIMITER_RPC)) {
1225+
ArrayList<RateLimiterInitialization.RpcRateLimiterItem> list2 = config
1226+
.getObjectList(Constant.RATE_LIMITER_RPC).stream()
1227+
.map(RateLimiterInitialization::createRpcItem)
1228+
.collect(Collectors.toCollection(ArrayList::new));
1229+
initialization.setRpcMap(list2);
1230+
}
12321231
return initialization;
12331232
}
12341233

framework/src/test/java/org/tron/common/config/args/ArgsTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.junit.Assert;
66
import org.junit.Before;
77
import org.junit.Test;
8+
import org.tron.common.parameter.RateLimiterInitialization;
89
import org.tron.common.utils.FileUtil;
910
import org.tron.core.Constant;
1011
import org.tron.core.config.args.Args;
@@ -34,9 +35,12 @@ public void testConfig() {
3435
Assert.assertEquals(Args.getInstance().getBlockCacheTimeout(), 60);
3536
Assert.assertEquals(Args.getInstance().isNodeDetectEnable(), false);
3637
Assert.assertFalse(Args.getInstance().isNodeEffectiveCheckEnable());
37-
Assert.assertEquals(Args.getInstance().getRateLimiterGlobalQps(), 50000);
38-
Assert.assertEquals(Args.getInstance().getRateLimiterGlobalIpQps(), 10000);
38+
Assert.assertEquals(Args.getInstance().getRateLimiterGlobalQps(), 1000);
39+
Assert.assertEquals(Args.getInstance().getRateLimiterGlobalIpQps(), 1000);
3940
Assert.assertEquals(Args.getInstance().p2pDisable, true);
4041
Assert.assertEquals(Args.getInstance().getMaxTps(), 1000);
42+
RateLimiterInitialization rateLimiter = Args.getInstance().getRateLimiterInitialization();
43+
Assert.assertEquals(rateLimiter.getHttpMap().size(), 1);
44+
Assert.assertEquals(rateLimiter.getRpcMap().size(), 0);
4145
}
4246
}

framework/src/test/resources/config-test.conf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,5 +346,15 @@ committee = {
346346
allowCreationOfContracts = 1 //mainnet:0 (reset by committee),test:1
347347
}
348348

349+
rate.limiter.global.qps = 1000
350+
rate.limiter.global.ip.qps = 1000
351+
rate.limiter.http = [
352+
{
353+
component = "GetNowBlockServlet",
354+
strategy = "GlobalPreemptibleAdapter",
355+
paramString = "permit=1"
356+
}
357+
]
358+
349359
node.dynamicConfig.enable = true
350360
node.dynamicConfig.checkInterval = 0

0 commit comments

Comments
 (0)