diff --git a/framework/src/main/java/org/tron/core/config/args/Args.java b/framework/src/main/java/org/tron/core/config/args/Args.java index fdf70ce5183..ec7036acea7 100644 --- a/framework/src/main/java/org/tron/core/config/args/Args.java +++ b/framework/src/main/java/org/tron/core/config/args/Args.java @@ -1013,14 +1013,16 @@ private static void loadDnsPublishParameters(NodeConfig.DnsConfig dns, if (dns.getChangeThreshold() > 0) { publishConfig.setChangeThreshold(dns.getChangeThreshold()); } else if (Double.compare(dns.getChangeThreshold(), 0.0) != 0) { - logger.error("Check node.dns.changeThreshold, should be bigger than 0, default 0.1"); + throw new TronError("Check node.dns.changeThreshold, should be bigger than 0, default 0.1", + TronError.ErrCode.PARAMETER_INIT); } int maxMergeSize = dns.getMaxMergeSize(); if (maxMergeSize >= 1 && maxMergeSize <= 5) { publishConfig.setMaxMergeSize(maxMergeSize); } else if (maxMergeSize != 0) { - logger.error("Check node.dns.maxMergeSize, should be [1~5], default 5"); + throw new TronError("Check node.dns.maxMergeSize, should be [1~5], default 5", + TronError.ErrCode.PARAMETER_INIT); } if (StringUtils.isNotEmpty(dns.getDnsPrivate())) { diff --git a/framework/src/test/java/org/tron/core/config/args/ArgsTest.java b/framework/src/test/java/org/tron/core/config/args/ArgsTest.java index ddc80014e55..107625d4893 100644 --- a/framework/src/test/java/org/tron/core/config/args/ArgsTest.java +++ b/framework/src/test/java/org/tron/core/config/args/ArgsTest.java @@ -634,6 +634,43 @@ public void testDnsPublishRejectsEmptyRequiredParameterWithParameterInitError() error.getMessage()); } + @Test + public void testDnsPublishRejectsInvalidChangeThresholdWithParameterInitError() { + Config config = dnsPublishConfig("node.dns.changeThreshold", "-0.1"); + + TronError error = Assert.assertThrows(TronError.class, + () -> Args.loadDnsPublishConfig(NodeConfig.fromConfig(config))); + + Assert.assertEquals(TronError.ErrCode.PARAMETER_INIT, error.getErrCode()); + Assert.assertEquals("Check node.dns.changeThreshold, should be bigger than 0, default 0.1", + error.getMessage()); + } + + @Test + public void testDnsPublishRejectsInvalidMaxMergeSizeWithParameterInitError() { + Config config = dnsPublishConfig("node.dns.maxMergeSize", "6"); + + TronError error = Assert.assertThrows(TronError.class, + () -> Args.loadDnsPublishConfig(NodeConfig.fromConfig(config))); + + Assert.assertEquals(TronError.ErrCode.PARAMETER_INIT, error.getErrCode()); + Assert.assertEquals("Check node.dns.maxMergeSize, should be [1~5], default 5", + error.getMessage()); + } + + @Test + public void testDnsPublishDisabledIgnoresInvalidPublishParameters() { + Map configMap = new HashMap<>(); + configMap.put("node.dns.publish", false); + configMap.put("node.dns.changeThreshold", -0.1); + configMap.put("node.dns.maxMergeSize", 6); + Config config = ConfigFactory.parseMap(configMap) + .withFallback(ConfigFactory.defaultReference()); + + Assert.assertFalse(Args.loadDnsPublishConfig(NodeConfig.fromConfig(config)) + .isDnsPublishEnable()); + } + @Test public void testCommitteeConfigRejectsOldRewardOptimizationWithoutPrerequisite() { Map configMap = new HashMap<>();