tronprotocol/java-tron

LiteFull Node stuck sync after 68096091 block

Opened this issue · 6 comments

Software Versions

openjdk version "1.8.0_432"
OpenJDK Runtime Environment (build 1.8.0_432-8u432-gaus1-0ubuntu222.04-ga)
OpenJDK 64-Bit Server VM (build 25.432-bga, mixed mode)

Expected behaviour

Sync to last block

Actual behaviour

Sync gets stuck on block 68096091

tron@tron:~$ curl -s http://192.168.0.13:8090/wallet/getnowblock | jq '.block_header.raw_data.number'
68096091

18:12:17.436 ERROR [sync-handle-block] net Process block failed, Num:68096092, ID:000000000040f105c28b00861d08dd9773a301ffcdc5c09f69b52eb45eace4357, reason: different resultCode txId: f6021d86aae06189b0df14df09e448f263073f49c8de7d5aa889150de56f4f90, expected: SUCCESS, actual: OUT_OF_TIME

Before this, synchronization was going correctly, restarting did not help, I used backup LiteFullNode_output-directory.tgz for 23-Dec-2024 05:56 http://34.143.247.77/backup20241223/

Frequency

Steps to reproduce the behaviour

  1. Download blockchain and FullNode.jar backup wget http://34.143.247.77/backup20241223/LiteFullNode_output-directory.tgz
    https://github.com/tronprotocol/java-tron/releases/download/GreatVoyage-v4.7.7/FullNode.jar

    Config from: https://github.com/tronprotocol/tron-deployment/blob/master/main_net_config.conf

  2. Unpack and use default main net conf

  3. When synchronization reaches the block 68096091 it stuck

Backtrace

First 1000 lines of log
https://pastebin.com/Xqc845VR

Last 1000 lines of log
https://pastebin.com/XYApwU5q

@namen3645
For OUT_OF_TIME error :
Increase the time tolerance of verification transactions
Increase the value of the maxTimeRatio configuration item in the node configuration file to 20.0 or higher(max 100.0).

vm = {
supportConstant = false
minTimeRatio = 0.0
maxTimeRatio = 20.0
saveInternalTx = false
}

@namen3645 beside the time tolerance, another possible reason could be your host machine performance, as
Minimum requirements:
CPU with 8+ cores
32GB RAM
200GB free storage space to sync the Mainnet with Lite fullnode data snapshot
50 MBit/sec download Internet service
Could you also check this?

Further @namen3645 you could use -Xmx24g inside java -Xmx24g -XX:+UseConcMarkSweepGC -jar FullNode.jar -c main_net_config.conf to make sure giving enough heap space for fullnode.

@namen3645 For OUT_OF_TIME error : Increase the time tolerance of verification transactions Increase the value of the maxTimeRatio configuration item in the node configuration file to 20.0 or higher(max 100.0).

vm = { supportConstant = false minTimeRatio = 0.0 maxTimeRatio = 20.0 saveInternalTx = false }

How is the timeRatio calculated?

@namen3645 beside the time tolerance, another possible reason could be your host machine performance, as Minimum requirements: CPU with 8+ cores 32GB RAM 200GB free storage space to sync the Mainnet with Lite fullnode data snapshot 50 MBit/sec download Internet service Could you also check this?

E5 2680v2 10 cores cpu
64 gb DDR3 ECC ram
Nvme SSD 1TB Adata
1000 mbit / s wan

@sYNCHROtime in Tron the equation would be generally:

TxCPULimit = maxTimeRatio * MaxCpuTimeOfOneTx

  • TxCPULimit: The maximum of time one smart contract transaction can consume.
  • MaxCpuTimeOfOneTx: A static value set by proposal. You could check the proposal No.65 in TranScan. The current value is 400ms, which is quite large.

Thus for a low performance host machine, you could set a higher value of maxTimeRatio.