kice
3월 30, 2022, 11:39오전
1
genesis 블록부터 sync하여 모든 블록의 state를 저장하는 archive node를 운영하고 있습니다.
(config. ADDITIONAL="–gcmode archive")
최신 블록까지 따라온 후에 정상적으로 싱크가 되지 않고 kend가 down됩니다.
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x131a4e3]
goroutine 73414 [running]:
github.com/klaytn/klaytn/blockchain/types.(*Block).Root(...)
/ext-go/1/src/github.com/klaytn/klaytn/blockchain/types/block.go:295
github.com/klaytn/klaytn/blockchain.(*BlockChain).insertChain.func1(0x0, 0xc0003ce800, 0xc0a591b1f0, 0xc08eb29a50, 0xc0892d5169d3a4b4, 0xf175ce96f, 0x306fea0)
/ext-go/1/src/github.com/klaytn/klaytn/blockchain/blockchain.go:1787 +0x63
created by github.com/klaytn/klaytn/blockchain.(*BlockChain).insertChain
/ext-go/1/src/github.com/klaytn/klaytn/blockchain/blockchain.go:1786 +0x1279
ken 버전: v1.8.2
kice
3월 30, 2022, 11:42오전
2
isArchiveMode=true 인 것과 관련있는것인가요?
kice
3월 30, 2022, 11:46오전
3
INFO[03/30,11:43:51 Z] [5] Inserted a new block number=86756666 hash=e3aac6…af0da5 txs=15 gas=4446840 elapsed=37.160ms processTxs=26.219ms finalize=3.120ms validateState=798.9µs totalWrite=6.487147ms trieWrite=6.204431ms
INFO[03/30,11:43:52 Z] [5] Inserted a new block number=86756667 hash=c64b61…ab11af txs=19 gas=1983624 elapsed=98.303ms processTxs=88.581ms finalize=1.728ms validateState=187.557µs totalWrite=7.284242ms trieWrite=6.972463ms
INFO[03/30,11:43:52 Z] [5] Inserted a new block number=86756668 hash=68b12b…d48819 txs=16 gas=1536538 elapsed=18.528ms processTxs=11.744ms finalize=1.508ms validateState=143.333µs totalWrite=4.161751ms trieWrite=3.888676ms
WARN[03/30,11:43:52 Z] [5] failed to get StateDB for prefetcher err="missing trie node 396979836ab41669086ddd6510ca5d8cd38f67f7a4a322e1e62b1add436ed476 (path )" parentBlockNum=86756670 currBlockNum=86756668
WARN[03/30,11:43:52 Z] [5] failed to get StateDB for prefetcher err="missing trie node d97c1a71c622270ac66b5604198324b00b99d1299dc0b1dc3b749a1373a4419c (path )" parentBlockNum=86756669 currBlockNum=86756668
INFO[03/30,11:43:53 Z] [5] Inserted a new block number=86756669 hash=6024c0…0cc82e txs=10 gas=877921 elapsed=11.899ms processTxs=8.447ms finalize=538.885µs validateState=25.751µs totalWrite=2.092608ms trieWrite=1.823923ms
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x131a4e3]
goroutine 422516 [running]:
github.com/klaytn/klaytn/blockchain/types.(*Block).Root(...)
/ext-go/1/src/github.com/klaytn/klaytn/blockchain/types/block.go:295
github.com/klaytn/klaytn/blockchain.(*BlockChain).insertChain.func1(0x0, 0xc000267400, 0xc08ac209a0, 0xc0b2c182d0, 0xc0892e7e5ca6bae5, 0x2390f367d0, 0x306fea0)
/ext-go/1/src/github.com/klaytn/klaytn/blockchain/blockchain.go:1787 +0x63
created by github.com/klaytn/klaytn/blockchain.(*BlockChain).insertChain
/ext-go/1/src/github.com/klaytn/klaytn/blockchain/blockchain.go:1786 +0x1279
Aidan
3월 30, 2022, 3:13오후
4
상세한 로그까지 공유주셔서 감사합니다.
공유주신 로그만 보면, 블록 싱크 속도를 향상시키기 위한 기능인 Prefetcher 에서 오류가 발생한 것으로 추정됩니다.
코어 개발팀에서 추가 테스트 및 원인분석을 해보겠습니다.
아직 본격적으로 분석을 진행하지 않았지만 Prefetcher 기능을 끄는 것으로 재발을 막을 수 있지 않을까 생각됩니다.
이 기능을 끄면 블록 처리 속도가 저하될 수는 있지만 블록 처리 과정에는 영향을 주지 않습니다.
kend.conf
파일 ADDITIONAL에 아래 설정을 추가하면 Prefetcher를 끌 수 있습니다.
--statedb.cache.num-fetcher-prefetch-worker 0
혹시 다른 이슈나 추가적인 정보있으시면 공유주시면 감사하겠습니다.
감사합니다.
kice
3월 31, 2022, 9:32오전
5
답변 감사합니다.
말씀주신 설정으로 우선 에러는 발생하지 않고 노드가 작동하고 있습니다.
싱크는 몇 블록씩 늦는 듯 합니다.
추가 정보 있으면 공유드리겠습니다.
Aidan
4월 11, 2022, 4:15오전
6
공유주신 이슈를 해결하는 개선내용 이 개발 완료되었으며, 4월말~5월초 사이에 출시될 Klaytn v1.8.3 버전에 반영될 예정입니다. 해당 버전이 정식 출시되면, 노드 버전 업데이트와 함께 --statedb.cache.num-fetcher-prefetch-worker 0
설정하신 내용을 제거하셔도 될 것 같습니다.
이슈 사항에 대해 리포팅해주셔서 감사합니다!