티스토리 뷰
[blockchain-explorer] Invalid results returned ::NOT_FOUND 오류 해결 방법
miiingo 2019. 3. 7. 14:06blockchain-explorer: Invalid results returned ::NOT_FOUND 오류 해결 방법
오류 발생
Hyperledger Fabric v1.2 네트워크를 구성하고 blockchain-explorer v0.3.7을 실행해 정상적으로 작동되는 것을 확인했다.
그런데 며칠이 지난 뒤, 갑자기 어느 순간부터 다음과 같은 오류가 뜨면서 blockchain-explorer가 실행되지 않았다.
네트워크를 아예 down하고 다시 up한 다음 blockchain-explorer를 실행하면 또 정상적으로 수행되다가 어느 순간부터 동일한 오류가 발생하기 시작했다.
최신 버전의 blockchain-explorer로 실행해도 마찬가지였다.
blockchain-explorer console 로그
postgres://hppoc:password@127.0.0.1:5432/fabricexplorer
error: [Orderer.js]: sendDeliver - rejecting - status:NOT_FOUND
<<<<<<<<<<<<<<<<<<<<<<<<<< Explorer Error >>>>>>>>>>>>>>>>>>>>>
Error: Invalid results returned ::NOT_FOUND
at ClientDuplexStream.<anonymous> (/opt/gopath/src/github.com/hyperledger/blockchain-explorer/node_modules/fabric-client/lib/Orderer.js:230:23)
at emitOne (events.js:116:13)
at ClientDuplexStream.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at ClientDuplexStream.Readable.push (_stream_readable.js:208:10)
at readCallback (/opt/gopath/src/github.com/hyperledger/blockchain-explorer/node_modules/grpc/src/client.js:312:14)
Received kill signal, shutting down gracefully
Closed out connections
orderer 컨테이너 로그
2019-01-21 02:08:17.134 UTC [common/deliver] deliverBlocks -> ERRO 6d74 [channel: honeybeechannel] Error reading from channel, cause was: NOT_FOUND
오류 해결
당장 blockchain-explorer 화면을 보여줘야 하는 상황에서 blockchain-explorer가 실행되지 않아 매우 난감한 입장이 되었고, 하나하나 분석을 해가며 어느 부분이 문제인지를 찾아보았다.
알아본 바로는, Orderer에서 해당 채널에 대한 블록을 찾을 수 없어서 발생하는 오류였다.
기존의 byfn 네트워크에서는 이런 오류가 발생하지 않았기 때문에, byfn 네트워크와 비교/분석을 해 보았더니 ORDERER_GENERAL_LEDGERTYPE
이 달랐다.
멀티 호스트를 사용해 네트워크를 구성하면서, ORDERER_GENERAL_LEDGERTYPE
을 ram
으로 설정해놓았는데 ram
유형은 프로세스가 다시 시작될 경우, 원장이 기성 블록으로 재설정되기 때문에 해당 오류가 발생한 것으로 추정된다.
ORDERER_GENERAL_LEDGERTYPE
의 default 값이 file
이기 때문에 해당 환경변수 설정 자체를 주석처리하고 네트워크를 재시작(restart)했더니 오류가 해결되었다.
※ Orderer 노드의 원장 유형
file : 운영환경용. 블록을 파일 시스템에 직접 저장. 디스크의 블록 위치는 Lightweight LevelDB 데이터베이스에서 번호로 '인덱싱'되어 클라이언트가 효율적으로 번호별 블록 검색이 가능. (default)
ram : 개발환경용. 메모리에 배치를 보존하고 구성 가능한 히스토리 크기를 보존. 프로세스를 다시 시작하면 원장이 기성 블록으로 재설정됨
json : 개발환경용. JSON 인코딩 파일로 파일 시스템에 일괄 처리를 저장. 원장을 쉽게 검사하고 충돌 방지 기능을 허용하기 위한 것
'Blockchain > Blockchain 네트워크 구성' 카테고리의 다른 글
[blockchain-explorer] Fabric v1.4 네트워크에 blockchain-explorer v0.3.9.1 연동 (0) | 2019.06.20 |
---|---|
[fabric-rest] nginx를 이용한 fabric-rest Load Balancing (0) | 2019.05.10 |
[Blockchain 네트워크 구성] Hyperledger Fabric v1.2: Docker-Compose 환경변수 설정 (0) | 2019.03.05 |
[fabric-rest] TIMEOUT 오류 발생 및 해결 방안 (0) | 2018.11.30 |
[blockchain-explorer] Blockchain-explorer 실행 PORT 변경 (0) | 2018.11.12 |
- Total
- Today
- Yesterday
- 암브로셔스
- 빅데이터 기초
- Private Data
- 하이퍼레저 인디
- 코딜리티
- 빅데이터 교육
- 하이퍼레저 페브릭
- Blockchain
- 어서와 데이터는 처음이지
- Hyperledger Fabric
- javascript
- 블록 체인
- Hyperledger Fabric v1.2
- 직딩잇템
- 하이퍼레저 패브릭
- 빅데이터 강의
- 문제풀이
- 코딩테스트
- 블록체인
- 빅데이터
- ubuntu
- docker
- 코테
- Hyperledger Fabric v1.1
- 알고리즘
- codility
- DOCs
- 기초 of 기초 데이터 개념
- ambrosus
- Hyperledger Indy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |