etclabscore / core-geth

A highly configurable Go implementation of the Ethereum protocol.
https://etclabscore.github.io/core-geth
GNU Lesser General Public License v3.0
268 stars 147 forks source link

Snap sync never finishes (keeps pivoting) #504

Open screw opened 1 year ago

screw commented 1 year ago

I am trying to run Ethereum classic node using the snap sync mode

System information

./geth version
CoreGeth
Version: 1.12.7-stable
Git Commit: a374c2e8243a7ce07715b2f6da2022b818a59cb7
Architecture: amd64
Go Version: go1.18.2
Operating System: linux
GOPATH=
GOROOT=/opt/hostedtoolcache/go/1.18.2/x64

Expected behaviour

geth should be able to sync all blocks and start generating state. Maybe unrelated information but I can sync ETH on this machine without a problem (using NVMe storage, 48CPUs, ..), so I don't think the I/O would be the reason.

Actual behaviour

Stuck in the following loop:

WARN [10-16|12:24:52.222] Pivot became stale, moving               old=16,150,847 new=16,150,911
INFO [10-16|12:24:52.253] Imported new block receipts              count=64  elapsed=26.220ms    number=16,150,910 hash=07b198..745667 age=13m1s    size=101.14KiB
INFO [10-16|12:25:04.359] Imported new block headers               count=1   elapsed=7.002ms     number=16,150,974 hash=fe5577..e93469
INFO [10-16|12:25:13.784] Imported new block headers               count=1   elapsed=6.971ms     number=16,150,975 hash=7040b5..beca6c
INFO [10-16|12:25:17.001] Imported new block headers               count=1   elapsed=6.349ms     number=16,150,976 hash=edbb7c..ff2726
INFO [10-16|12:25:41.967] Imported new block headers               count=2   elapsed=13.190ms    number=16,150,978 hash=f30e1a..a558b6
INFO [10-16|12:25:45.171] Imported new block headers               count=1   elapsed=6.481ms     number=16,150,979 hash=1f7aab..38307f
INFO [10-16|12:25:45.290] Downloader queue stats                   receiptTasks=0  blockTasks=0   itemSize=2.84KiB throttle=8192

With ETH I can see progress or at least the node is busy, but in the case of ETC it looks like the node is not doing anything.

I was expecting non-zero values for the syncing status.

> eth.syncing
{
  currentBlock: 16150910,
  healedBytecodeBytes: 0,
  healedBytecodes: 0,
  healedTrienodeBytes: 0,
  healedTrienodes: 0,
  healingBytecode: 0,
  healingTrienodes: 0,
  highestBlock: 16151031,
  startingBlock: 16148859,
  syncedAccountBytes: 0,
  syncedAccounts: 0,
  syncedBytecodeBytes: 0,
  syncedBytecodes: 0,
  syncedStorage: 0,
  syncedStorageBytes: 0
}

Steps to reproduce the behaviour

Start ETC node with syncMode="snap"