Skip to content

Commit 349e0c8

Browse files
committed
arm(db): remove leveldb support from arm64
1 parent e5055a7 commit 349e0c8

29 files changed

Lines changed: 210 additions & 131 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ static def isX86() {
1111

1212
static def isArm64() {
1313
def arch = System.getProperty("os.arch").toLowerCase()
14-
return new Architectures.KnownArchitecture("arm64", "aarch64").isAlias(arch)
14+
return Architectures.AARCH64.isAlias(arch)
1515
}
1616

1717
if (isArm64() && !JavaVersion.current().is(JavaVersion.VERSION_17)) {

chainbase/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ dependencies {
1010
api project(":common")
1111
api project(":crypto")
1212
api "org.fusesource.jansi:jansi:$jansiVersion"
13-
api 'io.github.tronprotocol:zksnark-java-sdk:1.0.0'
1413
api 'org.reflections:reflections:0.9.11'
1514
}
1615

common/src/main/java/org/tron/common/setting/RocksDbSettings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ public static Options getOptionsByDbName(String dbName) {
211211
return options;
212212
}
213213

214-
private static boolean isRunningInCI() {
214+
public static boolean isRunningInCI() {
215215
return Arrays.stream(CI_ENVIRONMENT_VARIABLES).anyMatch(System.getenv()::containsKey);
216216
}
217217
}

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.tron.common.arch.Arch;
3333
import org.tron.common.cache.CacheStrategies;
3434
import org.tron.common.cache.CacheType;
35+
import org.tron.common.setting.RocksDbSettings;
3536
import org.tron.common.utils.DbOptionalsUtils;
3637
import org.tron.common.utils.FileUtil;
3738
import org.tron.common.utils.Property;
@@ -175,13 +176,17 @@ public class Storage {
175176
private final Map<String, Sha256Hash> dbRoots = Maps.newConcurrentMap();
176177

177178
public static String getDbEngineFromConfig(final Config config) {
179+
String engine = config.hasPath(DB_ENGINE_CONFIG_KEY)
180+
? config.getString(DB_ENGINE_CONFIG_KEY) : DEFAULT_DB_ENGINE;
178181
if (Arch.isArm64()) {
179-
// if is arm64 but config is leveldb, should throw exception?
180-
logger.warn("Arm64 architecture detected, using RocksDB as db engine, ignore config.");
181-
return ROCKS_DB_ENGINE;
182+
if (RocksDbSettings.isRunningInCI()) {
183+
logger.warn("Arm64 detected, using RocksDB as db engine, ignore config for CI.");
184+
return ROCKS_DB_ENGINE;
185+
} else if (DEFAULT_DB_ENGINE.equalsIgnoreCase(engine)) {
186+
Arch.throwUnsupportedArm64Exception(); // throw exception if not RocksDB for Arm64
187+
}
182188
}
183-
return config.hasPath(DB_ENGINE_CONFIG_KEY)
184-
? config.getString(DB_ENGINE_CONFIG_KEY) : DEFAULT_DB_ENGINE;
189+
return engine;
185190
}
186191

187192
public static Boolean getDbVersionSyncFromConfig(final Config config) {

framework/build.gradle

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import org.gradle.nativeplatform.platform.internal.Architectures
2+
13
plugins {
24
id "org.gradle.test-retry" version "1.5.9"
35
id "org.sonarqube" version "2.6"
@@ -34,6 +36,11 @@ task version(type: Exec) {
3436
commandLine 'bash', '-c', '../ver.sh'
3537
}
3638

39+
static def isArm64() {
40+
def arch = System.getProperty("os.arch").toLowerCase()
41+
return Architectures.AARCH64.isAlias(arch)
42+
}
43+
3744
dependencies {
3845
//local libraries
3946
implementation fileTree(dir: 'libs', include: '*.jar')
@@ -122,6 +129,18 @@ test {
122129
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
123130
classDumpDir = file("$buildDir/jacoco/classpathdumps")
124131
}
132+
if (isArm64()) {
133+
exclude { element ->
134+
element.file.name.toLowerCase().contains('leveldb')
135+
}
136+
exclude('org/tron/program/DBConvertTest.class')
137+
filter {
138+
excludeTestsMatching '*.*leveldb*'
139+
excludeTestsMatching '*.*Leveldb*'
140+
excludeTestsMatching '*.*LevelDB*'
141+
excludeTestsMatching '*.*LevelDb*'
142+
}
143+
}
125144
if (isWindows()) {
126145
exclude '**/ShieldedTransferActuatorTest.class'
127146
exclude '**/BackupDbUtilTest.class'

framework/src/main/java/org/tron/program/DBConvert.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.rocksdb.RocksDBException;
3333
import org.rocksdb.RocksIterator;
3434
import org.rocksdb.Status;
35+
import org.tron.common.arch.Arch;
3536
import org.tron.common.utils.FileUtil;
3637
import org.tron.common.utils.MarketOrderPriceComparatorForLevelDB;
3738
import org.tron.common.utils.MarketOrderPriceComparatorForRocksDB;
@@ -91,6 +92,7 @@ public static org.iq80.leveldb.Options newDefaultLevelDbOptions() {
9192
}
9293

9394
public static void main(String[] args) {
95+
Arch.throwUnsupportedArm64Exception();
9496
int code = run(args);
9597
logger.info("exit code {}.", code);
9698
System.out.printf("exit code %d.\n", code);

gradle/verification-metadata.xml

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -569,35 +569,6 @@
569569
<sha256 value="cf8878e091c721ce2944d74979e9e38972019381781fcd6882f1562ba8d47e60" origin="Generated by Gradle"/>
570570
</artifact>
571571
</component>
572-
<component group="com.halibobor" name="leveldb" version="1.18.3">
573-
<artifact name="leveldb-1.18.3.jar">
574-
<sha256 value="0f722db29feb192377769555c73bc1a9bc6b81d31400957d596c645c957e45cc" origin="Generated by Gradle"/>
575-
</artifact>
576-
<artifact name="leveldb-1.18.3.pom">
577-
<sha256 value="4ae67f61cef4c5e2f460215f1b92832c5bc5a97c6c3d5b0219ddd20156143fd8" origin="Generated by Gradle"/>
578-
</artifact>
579-
</component>
580-
<component group="com.halibobor" name="leveldb-api" version="1.18.3">
581-
<artifact name="leveldb-api-1.18.3.jar">
582-
<sha256 value="3da4c1711f01e9087ca1cc58c55ac098d02c808d401d5595d084532ca227b101" origin="Generated by Gradle"/>
583-
</artifact>
584-
<artifact name="leveldb-api-1.18.3.pom">
585-
<sha256 value="825a008e567eb81d422581a567ba780b45a21ff0537e11d1fea9f49a3c332d33" origin="Generated by Gradle"/>
586-
</artifact>
587-
</component>
588-
<component group="com.halibobor" name="leveldb-project" version="1.18.3">
589-
<artifact name="leveldb-project-1.18.3.pom">
590-
<sha256 value="c908cfdc66a933a890ab0ae77ceb28676c995a9abbb15e4946a436ce1fc995b5" origin="Generated by Gradle"/>
591-
</artifact>
592-
</component>
593-
<component group="com.halibobor" name="leveldbjni-all" version="1.18.3">
594-
<artifact name="leveldbjni-all-1.18.3.jar">
595-
<sha256 value="83a72983b6a8e0b90449f7f1e9d56c9db54526288c21c93614c9c52b351fb232" origin="Generated by Gradle"/>
596-
</artifact>
597-
<artifact name="leveldbjni-all-1.18.3.pom">
598-
<sha256 value="2559bdc07dfda47215c6bad79a540566def47c2c110963e6e48402320530fd90" origin="Generated by Gradle"/>
599-
</artifact>
600-
</component>
601572
<component group="com.mchange" name="c3p0" version="0.9.5.4">
602573
<artifact name="c3p0-0.9.5.4.jar">
603574
<sha256 value="60cf2906cd6ad6771f514a3e848b74b3e3da99c1806f2a63c38e2dd8da5ef11f" origin="Generated by Gradle"/>

platform/build.gradle

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,15 @@ static def isX86() {
1010

1111
static def isArm64() {
1212
def arch = System.getProperty("os.arch").toLowerCase()
13-
return new Architectures.KnownArchitecture("arm64", "aarch64").isAlias(arch)
13+
return Architectures.AARCH64.isAlias(arch)
1414
}
1515

1616
if (isX86()) {
1717
ext {
18-
leveldbGroup = "org.fusesource.leveldbjni"
19-
leveldbName = "leveldbjni-all"
20-
leveldbVersion = "1.8"
2118
rocksDBVersion = "5.15.10"
2219
}
2320
} else if (isArm64()) {
2421
ext {
25-
leveldbGroup = "com.halibobor"
26-
leveldbName = "leveldbjni-all"
27-
leveldbVersion = "1.18.3"
2822
rocksDBVersion = "7.7.3"
2923
}
3024
} else {
@@ -45,8 +39,9 @@ sourceSets {
4539
}
4640

4741
dependencies {
48-
api group: leveldbGroup, name: leveldbName, version: leveldbVersion
42+
api group: 'org.fusesource.leveldbjni', name: 'leveldbjni-all', version: '1.8'
4943
api group: 'org.rocksdb', name: 'rocksdbjni', version: rocksDBVersion
44+
api 'io.github.tronprotocol:zksnark-java-sdk:1.0.0'
5045
}
5146

5247
tasks.withType(JavaCompile).configureEach {

platform/src/main/java/common/org/tron/common/arch/Arch.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,10 @@ public static boolean isArm64() {
5757
String osArch = getOsArch();
5858
return osArch.contains("arm64") || osArch.contains("aarch64");
5959
}
60+
61+
public static void throwUnsupportedArm64Exception() {
62+
if (isArm64()) {
63+
throw new UnsupportedOperationException("Unsupported OS: " + getOsArch());
64+
}
65+
}
6066
}

plugins/build.gradle

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import org.gradle.nativeplatform.platform.internal.Architectures
12
plugins {
23
id "org.sonarqube" version "2.6"
34
}
@@ -20,6 +21,11 @@ configurations.getByName('checkstyleConfig') {
2021
transitive = false
2122
}
2223

24+
static def isArm64() {
25+
def arch = System.getProperty("os.arch").toLowerCase()
26+
return Architectures.AARCH64.isAlias(arch)
27+
}
28+
2329
dependencies {
2430
//local libraries
2531
implementation fileTree(dir: 'libs', include: '*.jar')
@@ -29,11 +35,12 @@ dependencies {
2935
implementation group: 'com.typesafe', name: 'config', version: '1.3.2'
3036
implementation group: 'me.tongfei', name: 'progressbar', version: '0.9.3'
3137
implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.69'
32-
implementation 'com.halibobor:leveldbjni-all:1.18.3'
33-
implementation 'com.halibobor:leveldb:1.18.3'
38+
implementation 'io.github.tronprotocol:leveldbjni-all:1.18.2'
39+
implementation 'io.github.tronprotocol:leveldb:1.18.2'
3440
implementation project(":protocol")
3541
implementation project(":platform"), {
3642
exclude(group: 'org.fusesource.leveldbjni', module: 'leveldbjni-all')
43+
exclude(group: 'io.github.tronprotocol', module: 'zksnark-java-sdk')
3744
}
3845
}
3946

@@ -78,6 +85,18 @@ test {
7885
destinationFile = file("../framework/build/jacoco/jacocoTest1.exec")
7986
classDumpDir = file("$buildDir/jacoco/classpathdumps")
8087
}
88+
89+
if (isArm64()) {
90+
91+
exclude('org.tron.plugins.leveldb.*')
92+
filter {
93+
excludeTestsMatching '*.*leveldb*'
94+
excludeTestsMatching '*.*Leveldb*'
95+
excludeTestsMatching '*.*LevelDB*'
96+
excludeTestsMatching '*.*LevelDb*'
97+
excludeTestsMatching '*.*Archive*'
98+
}
99+
}
81100
}
82101

83102
jacocoTestReport {

0 commit comments

Comments
 (0)