Skip to content

Commit d90b7e2

Browse files
author
vividcoder
committed
fix(config): revert validateConfig, restore ARM64 silent db engine override
The validateConfig() approach caused 1273 test failures on ARM64 because most tests use config files with db.engine="LEVELDB" and setParam() was throwing IllegalArgumentException before any test logic could run. Restore the original silent override in Storage.getDbEngineFromConfig() which automatically switches to ROCKSDB on ARM64. Update the testConfigStorageDefaults test to be architecture-aware.
1 parent 56f2cec commit d90b7e2

3 files changed

Lines changed: 13 additions & 22 deletions

File tree

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.commons.lang3.StringUtils;
3030
import org.iq80.leveldb.CompressionType;
3131
import org.iq80.leveldb.Options;
32+
import org.tron.common.arch.Arch;
3233
import org.tron.common.cache.CacheStrategies;
3334
import org.tron.common.cache.CacheType;
3435
import org.tron.common.utils.DbOptionalsUtils;
@@ -89,6 +90,7 @@ public class Storage {
8990
* Default values of directory
9091
*/
9192
private static final String DEFAULT_DB_ENGINE = "LEVELDB";
93+
private static final String ROCKS_DB_ENGINE = "ROCKSDB";
9294
private static final boolean DEFAULT_DB_SYNC = false;
9395
private static final boolean DEFAULT_EVENT_SUBSCRIBE_CONTRACT_PARSE = true;
9496
private static final String DEFAULT_DB_DIRECTORY = "database";
@@ -173,6 +175,10 @@ public class Storage {
173175
private final Map<String, Sha256Hash> dbRoots = Maps.newConcurrentMap();
174176

175177
public static String getDbEngineFromConfig(final Config config) {
178+
if (Arch.isArm64()) {
179+
logger.warn("Arm64 architecture detected, using RocksDB as db engine, ignore config.");
180+
return ROCKS_DB_ENGINE;
181+
}
176182
return config.hasPath(DB_ENGINE_CONFIG_KEY)
177183
? config.getString(DB_ENGINE_CONFIG_KEY) : DEFAULT_DB_ENGINE;
178184
}

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -130,20 +130,6 @@ public static void setParam(final String[] args, final String confFileName) {
130130

131131
// 4. Init witness (depends on CLI witness flag)
132132
initLocalWitnesses(config, cmd);
133-
134-
// 5. Validate final configuration
135-
validateConfig();
136-
}
137-
138-
/**
139-
* Validate the final configuration after all layers (defaults, config, CLI) are applied.
140-
* Fails fast on incompatible configurations.
141-
*/
142-
private static void validateConfig() {
143-
if (Arch.isArm64() && "LEVELDB".equalsIgnoreCase(PARAMETER.storage.getDbEngine())) {
144-
throw new IllegalArgumentException(
145-
"LevelDB is not supported on ARM64 architecture, please use ROCKSDB");
146-
}
147133
}
148134

149135
/**

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -324,19 +324,18 @@ public void testCliOverridesStorageConfig() {
324324
*
325325
* <p>config-test.conf defines: db.directory = "database", db.engine = "LEVELDB".
326326
* Without any CLI storage arguments, the Storage object should use these config values.
327-
* On ARM64, LEVELDB is not supported and validateConfig() should throw.
327+
* On ARM64, the silent override in Storage.getDbEngineFromConfig() forces ROCKSDB.
328328
*/
329329
@Test
330330
public void testConfigStorageDefaults() {
331-
if (Arch.isArm64()) {
332-
Assert.assertThrows(IllegalArgumentException.class,
333-
() -> Args.setParam(new String[] {}, TestConstants.TEST_CONF));
334-
} else {
335-
Args.setParam(new String[] {}, TestConstants.TEST_CONF);
331+
Args.setParam(new String[] {}, TestConstants.TEST_CONF);
336332

337-
CommonParameter parameter = Args.getInstance();
333+
CommonParameter parameter = Args.getInstance();
338334

339-
Assert.assertEquals("database", parameter.getStorage().getDbDirectory());
335+
Assert.assertEquals("database", parameter.getStorage().getDbDirectory());
336+
if (Arch.isArm64()) {
337+
Assert.assertEquals("ROCKSDB", parameter.getStorage().getDbEngine());
338+
} else {
340339
Assert.assertEquals("LEVELDB", parameter.getStorage().getDbEngine());
341340
}
342341

0 commit comments

Comments
 (0)