Skip to content

Commit 17f9304

Browse files
authored
Merge pull request #5206 from wubin01/optimize_config_parse
feat(config): optimize rate.limiter configuration parsing
2 parents 382a405 + 1cd7c3e commit 17f9304

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
@@ -974,9 +974,7 @@ public static void setParam(final String[] args, final String confFileName) {
974974
config.hasPath(Constant.RATE_LIMITER_GLOBAL_IP_QPS) ? config
975975
.getInt(Constant.RATE_LIMITER_GLOBAL_IP_QPS) : 10000;
976976

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

981979
PARAMETER.changedDelegation =
982980
config.hasPath(Constant.COMMITTEE_CHANGED_DELEGATION) ? config
@@ -1219,21 +1217,22 @@ private static Account createAccount(final ConfigObject asset) {
12191217
}
12201218

12211219
private static RateLimiterInitialization getRateLimiterFromConfig(
1222-
final com.typesafe.config.Config config) {
1223-
1220+
final com.typesafe.config.Config config) {
12241221
RateLimiterInitialization initialization = new RateLimiterInitialization();
1225-
ArrayList<RateLimiterInitialization.HttpRateLimiterItem> list1 = config
1226-
.getObjectList(Constant.RATE_LIMITER_HTTP).stream()
1227-
.map(RateLimiterInitialization::createHttpItem)
1228-
.collect(Collectors.toCollection(ArrayList::new));
1229-
initialization.setHttpMap(list1);
1230-
1231-
ArrayList<RateLimiterInitialization.RpcRateLimiterItem> list2 = config
1232-
.getObjectList(Constant.RATE_LIMITER_RPC).stream()
1233-
.map(RateLimiterInitialization::createRpcItem)
1234-
.collect(Collectors.toCollection(ArrayList::new));
1235-
1236-
initialization.setRpcMap(list2);
1222+
if (config.hasPath(Constant.RATE_LIMITER_HTTP)) {
1223+
ArrayList<RateLimiterInitialization.HttpRateLimiterItem> list1 = config
1224+
.getObjectList(Constant.RATE_LIMITER_HTTP).stream()
1225+
.map(RateLimiterInitialization::createHttpItem)
1226+
.collect(Collectors.toCollection(ArrayList::new));
1227+
initialization.setHttpMap(list1);
1228+
}
1229+
if (config.hasPath(Constant.RATE_LIMITER_RPC)) {
1230+
ArrayList<RateLimiterInitialization.RpcRateLimiterItem> list2 = config
1231+
.getObjectList(Constant.RATE_LIMITER_RPC).stream()
1232+
.map(RateLimiterInitialization::createRpcItem)
1233+
.collect(Collectors.toCollection(ArrayList::new));
1234+
initialization.setRpcMap(list2);
1235+
}
12371236
return initialization;
12381237
}
12391238

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)