Skip to content

memiavl state-synced node cannot be used as JSON-RPC node #1146

Open
@samuel-tay

Description

Describe the bug
memiavl state-synced node cannot be used as JSON-RPC node. Same result for node using enable-indexer = true

Another node that was traditionally state-synced with memiavl enabled provided the snapshot.

To Reproduce

  • Traditional statesync with memiavl and versiondb enabled by adding following to app.toml
  • Should get a snapshot when synced
[memiavl]

# Enable defines if the memiavl should be enabled.
enable = true

# ZeroCopy defines if the memiavl should return slices pointing to mmap-ed buffers directly (zero-copy),
# the zero-copied slices must not be retained beyond current block's execution.
zero-copy = false

# AsyncCommitBuffer defines the size of asynchronous commit queue, this greatly improve block catching-up
# performance, -1 means synchronous commit.
async-commit-buffer = 0

# SnapshotKeepRecent defines what many old snapshots (excluding the latest one) to keep after new snapshots are taken.
snapshot-keep-recent = 2

# SnapshotInterval defines the block interval the memiavl snapshot is taken, default to 1000.
snapshot-interval = 1000

# CacheSize defines the size of the cache for each memiavl store, default to 1000.
cache-size = 1000

[store]
streamers = ["versiondb"]
  • Export memiavl snapshot with cronosd snapshots dump 9911000 2
  • Copied the 9911000-2.tar.gz file into another server
  • Import snapshot with cronosd snapshots load 9911000-2.tar.gz
  • Restore snapshot using cronosd snapshots restore 9911000 2
  • Bootstrap with cronosd tendermint bootstrap bootstrap-state
  • Start cronosd with cronosd start. Node starts syncing
  • Send eth_call to JSON-RPC port curl localhost:18454 -X POST -H "Content-Type: application/json" --data '{"method":"eth_call","params":[{"from":null,"to":"0x6b175474e89094c44da98b954eedeac495271d0f","data":"0x70a082310000000000000000000000006E0d01A76C3Cf4288372a29124A26D4353EE51BE"}, "latest"],"id":1,"jsonrpc":"2.0"}'
  • Get reply of {"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"rpc error: code = Unknown desc = rpc error: code = Internal desc = failed to obtain coinbase address: failed to retrieve validator from block proposer address crcvalcons1gulrn5tyrjhrs39gxnnfmp52y8duentwdf4shu: validator does not exist: unknown request"}}

Expected behavior
On another node with almost exact same app.toml and config.toml except for the memiavl and versiondb, got reply of {"jsonrpc":"2.0","id":1,"result":"0x"}

Desktop (please complete the following information):

  • Linux v1.0.12

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions