Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9aa3383
feat(jvm/JEP-358): enhance NullPointerException handling
halibobo1205 Jul 16, 2024
b6ea27c
feat(jvm/JEP-223): use java.specification.version
halibobo1205 Jul 25, 2024
0896920
feat(jvm/JDK-8176425): Add radix indication in NumberFormatException …
halibobo1205 Mar 15, 2025
dcfde9b
feat(jvm/JEP-277): remove deprecated and marked for removal code
halibobo1205 Mar 15, 2025
d7046a5
feat(jvm/JEP-286): remove lombok.var
halibobo1205 Oct 16, 2024
cfb0316
feat(dependencies): update dependencies for jdk17
halibobo1205 Aug 2, 2024
04555bb
feat(JVM): add jvm options for jdk17
halibobo1205 Nov 18, 2024
2bd5c9a
feat(docker): support ARM64
halibobo1205 Dec 4, 2024
e5b83a2
feat(db): keep leveldb and rocksdb same behaviors for db operations
halibobo1205 Nov 20, 2024
0dd6259
feat(db): remove rocksDB compatibility with LevelDB
halibobo1205 Oct 21, 2024
909cd2b
feat(db): update leveldb and rocksdb for arm
halibobo1205 Nov 9, 2024
f25d650
feat(math): add hard-code for arm pow
halibobo1205 Mar 14, 2025
246900e
test(ci):fix test failed
halibobo1205 May 12, 2025
e42cb35
feat(db): mark `allKeys`,`allValues`,`getTotal` as `Deprecated` and `…
halibobo1205 Jul 2, 2025
5d688a0
feat(*): remove redundant boxing
halibobo1205 Jul 2, 2025
6895aab
feat(db): make market_pair_price_to_order as Constant
halibobo1205 Jul 7, 2025
658e373
feat(math): change POW to EXPONENT for better name
halibobo1205 Jul 7, 2025
98a54d1
feat(Market): Unify comparePrice
halibobo1205 Jul 7, 2025
a75c2dc
feat(db): optimize RocksDB configuration for CI environments to reduc…
halibobo1205 Jul 7, 2025
32d1cc8
feat(ci): add build for arm and x86
halibobo1205 Mar 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/workflows/arm64-platform.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle

name: arm64-Platform Matrix

on:
push:
branches: [ 'develop', 'master', 'release_**' ]
pull_request:
branches: [ 'develop', 'master', 'release_**' ]

jobs:
build:

name: ${{ matrix.os }} - ${{ matrix.arch }}
runs-on: ${{ matrix.runner }}

strategy:
fail-fast: false
matrix:
include:
# Apple Silicon runners (using latest available)
# see https://github.com/actions/runner-images?tab=readme-ov-file#available-images
- os: macOS
arch: arm64
runner: macos-latest
# Linux arm runners
- os: Linux
arch: arm64
runner: ubuntu-24.04-arm

permissions:
contents: read

steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build with Gradle Wrapper
run: ./gradlew clean build --no-daemon
54 changes: 54 additions & 0 deletions .github/workflows/x86_64-platform.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle

name: X86_64-Platform Matrix

on:
push:
branches: [ 'develop', 'master', 'release_**' ]
pull_request:
branches: [ 'develop', 'master', 'release_**' ]

jobs:
build:

name: ${{ matrix.os }} - ${{ matrix.arch }}
runs-on: ${{ matrix.runner }}

strategy:
fail-fast: false
matrix:
include:
# Macos Intel runners
# see https://github.com/actions/runner-images?tab=readme-ov-file#available-images
- os: macOS
arch: x86_64
runner: macos-13
# Linux x86_64 runners
- os: Linux
arch: x86_64
runner: ubuntu-latest

permissions:
contents: read

steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'zulu'

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build with Gradle Wrapper
run: ./gradlew clean build --no-daemon
5 changes: 4 additions & 1 deletion actuator/src/main/java/org/tron/core/vm/VM.java
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,10 @@ public static void play(Program program, JumpTable jumpTable) {
} catch (JVMStackOverFlowException | OutOfTimeException e) {
throw e;
} catch (RuntimeException e) {
if (StringUtils.isEmpty(e.getMessage())) {
// https://openjdk.org/jeps/358
// https://bugs.openjdk.org/browse/JDK-8220715
// since jdk 14, the NullPointerExceptions message is not empty
if (e instanceof NullPointerException || StringUtils.isEmpty(e.getMessage())) {
logger.warn("Unknown Exception occurred, tx id: {}",
Hex.toHexString(program.getRootTransactionId()), e);
program.setRuntimeFailure(new RuntimeException("Unknown Exception"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ public boolean equals(Object o) {

@Override
public int hashCode() {
return new Integer(Boolean.valueOf(byTestingSuite).hashCode()
return Boolean.valueOf(byTestingSuite).hashCode()
+ Boolean.valueOf(byTransaction).hashCode()
+ address.hashCode()
+ balance.hashCode()
Expand All @@ -326,8 +326,7 @@ public int hashCode() {
+ origin.hashCode()
+ prevHash.hashCode()
+ deposit.hashCode()
+ timestamp.hashCode()
).hashCode();
+ timestamp.hashCode();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public boolean equals(Object obj) {

@Override
public int hashCode() {
return new Integer(type).hashCode();
return type;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,6 @@ public boolean equals(Object obj) {

@Override
public int hashCode() {
return new Integer(type.hashCode() + Objects.hashCode(value)).hashCode();
return type.hashCode() + Objects.hashCode(value);
}
}
41 changes: 36 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,35 @@
import org.gradle.nativeplatform.platform.internal.Architectures
allprojects {
version = "1.0.0"
apply plugin: "java-library"
}

static def isX86() {
def arch = System.getProperty("os.arch").toLowerCase()
return Architectures.X86_64.isAlias(arch) || Architectures.X86.isAlias(arch)
}

static def isArm64() {
def arch = System.getProperty("os.arch").toLowerCase()
return new Architectures.KnownArchitecture("arm64", "aarch64").isAlias(arch)
}

if (isArm64() && !JavaVersion.current().is(JavaVersion.VERSION_17)) {
throw new GradleException("Java 17 is required to build Java-Tron for arm64.\n" +
" Detected version ${JavaVersion.current()}")
}

if (isX86() && !JavaVersion.current().isJava8()) {
throw new GradleException("Java 8 is required to build Java-Tron for x86.\n" +
" Detected version ${JavaVersion.current()}")
}

subprojects {
apply plugin: "jacoco"
apply plugin: "maven-publish"

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.current()

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
jacoco {
Expand Down Expand Up @@ -49,10 +70,16 @@ subprojects {
implementation group: 'joda-time', name: 'joda-time', version: '2.3'
implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.69'

compileOnly 'org.projectlombok:lombok:1.18.12'
annotationProcessor 'org.projectlombok:lombok:1.18.12'
testCompileOnly 'org.projectlombok:lombok:1.18.12'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'
compileOnly 'org.projectlombok:lombok:1.18.34'
annotationProcessor 'org.projectlombok:lombok:1.18.34'
testCompileOnly 'org.projectlombok:lombok:1.18.34'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.34'

// https://www.oracle.com/java/technologies/javase/11-relnote-issues.html#JDK-8190378
implementation group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'
// for json-rpc, see https://github.com/briandilley/jsonrpc4j/issues/278
implementation group: 'javax.jws', name: 'javax.jws-api', version: '1.1'
annotationProcessor group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'

testImplementation group: 'junit', name: 'junit', version: '4.13.2'
testImplementation "org.mockito:mockito-core:4.11.0"
Expand All @@ -71,6 +98,10 @@ subprojects {
reproducibleFileOrder = true
duplicatesStrategy = DuplicatesStrategy.INCLUDE // allow duplicates
}
tasks.withType(Test).configureEach {
// https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.Test.html#org.gradle.api.tasks.testing.Test:environment
environment 'CI', 'true'
}
}

task copyToParent(type: Copy) {
Expand Down
15 changes: 15 additions & 0 deletions chainbase/src/main/java/org/tron/common/storage/OptionsPicker.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.tron.common.storage;

import org.tron.common.setting.RocksDbSettings;
import org.tron.common.utils.StorageUtils;

public class OptionsPicker {

protected org.iq80.leveldb.Options getOptionsByDbNameForLevelDB(String dbName) {
return StorageUtils.getOptionsByDbName(dbName);
}

protected org.rocksdb.Options getOptionsByDbNameForRocksDB(String dbName) {
return RocksDbSettings.getOptionsByDbName(dbName);
}
}
Loading
Loading