Skip to content

Commit 1292373

Browse files
committed
fix(config): address PR review feedback on bean binding
- StorageConfig: restore try-catch around parseInt/parseLong in readDbOption() to preserve friendly error messages with field name, expected type, and actual value (matches develop Storage.setIfNeeded). - NodeConfig: align JsonRpcConfig.maxBlockFilterNum default (0 -> 50000) with reference.conf and develop CommonParameter default. - reference.conf: change DNS maxMergeSize (5 -> 0) and changeThreshold (0.1 -> 0.0) so behavior matches develop when users omit these keys (develop uses hasPath guard, leaving PublishConfig defaults of 0). - CommitteeConfig: remove redundant alias block + public setters for allowPBFT/pBFTExpireNum. Public setters caused ConfigBeanFactory to derive uppercase property names that don't match config keys, which previously required the alias workaround. Keep only getters + direct field assignment in fromConfig().
1 parent 62a3236 commit 1292373

4 files changed

Lines changed: 45 additions & 24 deletions

File tree

common/src/main/java/org/tron/core/config/args/CommitteeConfig.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,13 @@ public class CommitteeConfig {
5151
@Setter(lombok.AccessLevel.NONE)
5252
private long pBFTExpireNum = 20;
5353

54+
// Only getters are exposed. No public setters — ConfigBeanFactory scans public
55+
// setters via reflection and would derive key "PBFTExpireNum" / "AllowPBFT"
56+
// (JavaBean uppercase rule), which does not match config keys "pBFTExpireNum"
57+
// / "allowPBFT" and would throw. Values are assigned to fields directly in
58+
// fromConfig() below.
5459
public long getAllowPBFT() { return allowPBFT; }
55-
public void setAllowPBFT(long v) { this.allowPBFT = v; }
5660
public long getPBFTExpireNum() { return pBFTExpireNum; }
57-
public void setPBFTExpireNum(long v) { this.pBFTExpireNum = v; }
5861
private long allowTvmFreeze = 0;
5962
private long allowTvmVote = 0;
6063
private long allowTvmLondon = 0;
@@ -99,15 +102,7 @@ public class CommitteeConfig {
99102
public static CommitteeConfig fromConfig(Config config) {
100103
Config section = config.getConfig("committee");
101104

102-
// ConfigBeanFactory derives key names from setter methods. For setPBFTExpireNum()
103-
// it expects "PBFTExpireNum" (capital P), but config.conf uses "pBFTExpireNum".
104-
// Add uppercase alias so ConfigBeanFactory can find it.
105-
Config aliased = section;
106-
if (section.hasPath(PBFT_EXPIRE_NUM_KEY) && !section.hasPath("PBFTExpireNum")) {
107-
aliased = aliased.withValue("PBFTExpireNum", section.getValue(PBFT_EXPIRE_NUM_KEY));
108-
}
109-
110-
CommitteeConfig cc = ConfigBeanFactory.create(aliased, CommitteeConfig.class);
105+
CommitteeConfig cc = ConfigBeanFactory.create(section, CommitteeConfig.class);
111106
// Ensure the manually-named fields get the right values from the original keys
112107
cc.allowPBFT = section.hasPath(ALLOW_PBFT_KEY) ? section.getLong(ALLOW_PBFT_KEY) : 0;
113108
cc.pBFTExpireNum = section.hasPath(PBFT_EXPIRE_NUM_KEY)

common/src/main/java/org/tron/core/config/args/NodeConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ public void setHttpPBFTPort(int v) {
300300

301301
private int maxBlockRange = 5000;
302302
private int maxSubTopics = 1000;
303-
private int maxBlockFilterNum = 0;
303+
private int maxBlockFilterNum = 50000;
304304
}
305305

306306
@Getter

common/src/main/java/org/tron/core/config/args/StorageConfig.java

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -230,25 +230,51 @@ private static DbOptionOverride readDbOption(Config section, String key) {
230230
Boolean.parseBoolean(conf.get("verifyChecksums").unwrapped().toString()));
231231
}
232232
if (conf.containsKey("compressionType")) {
233-
o.setCompressionType(
234-
Integer.parseInt(conf.get("compressionType").unwrapped().toString()));
233+
String param = conf.get("compressionType").unwrapped().toString();
234+
try {
235+
o.setCompressionType(Integer.parseInt(param));
236+
} catch (NumberFormatException e) {
237+
throwIllegalArgumentException("compressionType", Integer.class, param);
238+
}
235239
}
236240
if (conf.containsKey("blockSize")) {
237-
o.setBlockSize(
238-
Integer.parseInt(conf.get("blockSize").unwrapped().toString()));
241+
String param = conf.get("blockSize").unwrapped().toString();
242+
try {
243+
o.setBlockSize(Integer.parseInt(param));
244+
} catch (NumberFormatException e) {
245+
throwIllegalArgumentException("blockSize", Integer.class, param);
246+
}
239247
}
240248
if (conf.containsKey("writeBufferSize")) {
241-
o.setWriteBufferSize(
242-
Integer.parseInt(conf.get("writeBufferSize").unwrapped().toString()));
249+
String param = conf.get("writeBufferSize").unwrapped().toString();
250+
try {
251+
o.setWriteBufferSize(Integer.parseInt(param));
252+
} catch (NumberFormatException e) {
253+
throwIllegalArgumentException("writeBufferSize", Integer.class, param);
254+
}
243255
}
244256
if (conf.containsKey("cacheSize")) {
245-
o.setCacheSize(
246-
Long.parseLong(conf.get("cacheSize").unwrapped().toString()));
257+
String param = conf.get("cacheSize").unwrapped().toString();
258+
try {
259+
o.setCacheSize(Long.parseLong(param));
260+
} catch (NumberFormatException e) {
261+
throwIllegalArgumentException("cacheSize", Long.class, param);
262+
}
247263
}
248264
if (conf.containsKey("maxOpenFiles")) {
249-
o.setMaxOpenFiles(
250-
Integer.parseInt(conf.get("maxOpenFiles").unwrapped().toString()));
265+
String param = conf.get("maxOpenFiles").unwrapped().toString();
266+
try {
267+
o.setMaxOpenFiles(Integer.parseInt(param));
268+
} catch (NumberFormatException e) {
269+
throwIllegalArgumentException("maxOpenFiles", Integer.class, param);
270+
}
251271
}
252272
return o;
253273
}
274+
275+
private static void throwIllegalArgumentException(String param, Class<?> type, String actual) {
276+
throw new IllegalArgumentException(
277+
String.format("[storage.properties] %s must be %s type, actual: %s.",
278+
param, type.getSimpleName(), actual));
279+
}
254280
}

common/src/main/resources/reference.conf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,8 @@ node {
369369
dnsPrivate = ""
370370
knownUrls = []
371371
staticNodes = []
372-
maxMergeSize = 5
373-
changeThreshold = 0.1
372+
maxMergeSize = 0
373+
changeThreshold = 0.0
374374
serverType = ""
375375
accessKeyId = ""
376376
accessKeySecret = ""

0 commit comments

Comments
 (0)