From 4d522c46b89f1e7e7b5bf952e5c2b4c0096742b9 Mon Sep 17 00:00:00 2001 From: GrapeS Date: Tue, 29 Sep 2026 11:09:59 +0800 Subject: [PATCH 1/4] fix args init, should throw TronError --- framework/src/main/java/org/tron/core/config/args/Args.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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..3715ca0397d 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,14 @@ 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())) { From 33ce9d8b92e69d823f2809e896c4ed1e8535fd42 Mon Sep 17 00:00:00 2001 From: GrapeS Date: Tue, 29 Sep 2026 11:30:15 +0800 Subject: [PATCH 2/4] style(config): wrap long lines in Args --- framework/src/main/java/org/tron/core/config/args/Args.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 3715ca0397d..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) { - throw new TronError("Check node.dns.changeThreshold, should be bigger than 0, default 0.1", TronError.ErrCode.PARAMETER_INIT); + 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) { - throw new TronError("Check node.dns.maxMergeSize, should be [1~5], default 5", TronError.ErrCode.PARAMETER_INIT); + throw new TronError("Check node.dns.maxMergeSize, should be [1~5], default 5", + TronError.ErrCode.PARAMETER_INIT); } if (StringUtils.isNotEmpty(dns.getDnsPrivate())) { From e50c86d67fca27ca2fc4e2043fce5a67c55d16e3 Mon Sep 17 00:00:00 2001 From: GrapeS Date: Tue, 29 Sep 2026 14:46:17 +0800 Subject: [PATCH 3/4] test(config): cover invalid DNS publish parameters in ArgsTest Invalid node.dns.changeThreshold and node.dns.maxMergeSize now fail startup with TronError(PARAMETER_INIT); add tests for both. --- .../org/tron/core/config/args/ArgsTest.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) 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..e912e62333b 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,30 @@ 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 testCommitteeConfigRejectsOldRewardOptimizationWithoutPrerequisite() { Map configMap = new HashMap<>(); From c716c01a8059472892de94f3438d8eb53bb4d93a Mon Sep 17 00:00:00 2001 From: GrapeS Date: Mon, 12 Oct 2026 16:36:05 +0800 Subject: [PATCH 4/4] test(config): cover DNS publish parameters when publish is disabled --- .../java/org/tron/core/config/args/ArgsTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 e912e62333b..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 @@ -658,6 +658,19 @@ public void testDnsPublishRejectsInvalidMaxMergeSizeWithParameterInitError() { 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<>();