한 블록에 다량의 transaction을 넣는 중에 Error: Invalid response: null << 에러가 빈번하게 발생합니다

컨트랙트 deploy transaction을 대량으로 발생시키는 테스트 중에 아래와 같은 에러가 발생합니다.

2021-09-13 11:49:22 error: libCaver.js:84 exception occured!:
Action: sendSmartContractDeploy
Error: Invalid response: null
at Object.InvalidResponse (/Users/hongjonghyeon/work/bitbucket/dscanner-klaytn/dscanner-klaytn-wapis/node_modules/caver-js/packages/caver-core-helpers/src/errors.js:90:37)
at XMLHttpRequest.request.onreadystatechange (/Users/hongjonghyeon/work/bitbucket/dscanner-klaytn/dscanner-klaytn-wapis/node_modules/caver-js/packages/caver-core-requestmanager/caver-providers-http/src/index.js:103:32)
at XMLHttpRequestEventTarget.dispatchEvent (/Users/hongjonghyeon/work/bitbucket/dscanner-klaytn/dscanner-klaytn-wapis/node_modules/xhr2-cookies/dist/xml-http-request-event-target.js:34:22)
at XMLHttpRequest._setReadyState (/Users/hongjonghyeon/work/bitbucket/dscanner-klaytn/dscanner-klaytn-wapis/node_modules/xhr2-cookies/dist/xml-http-request.js:208:14)
at XMLHttpRequest._onHttpRequestError (/Users/hongjonghyeon/work/bitbucket/dscanner-klaytn/dscanner-klaytn-wapis/node_modules/xhr2-cookies/dist/xml-http-request.js:349:14)
at ClientRequest. (/Users/hongjonghyeon/work/bitbucket/dscanner-klaytn/dscanner-klaytn-wapis/node_modules/xhr2-cookies/dist/xml-http-request.js:252:61)
at ClientRequest.emit (events.js:376:20)
at Socket.socketErrorListener (_http_client.js:475:9)
at Socket.emit (events.js:376:20)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:82:21)

한 블록에 여러개의 deploy transaction이 들어가는 구조인데
deploy가 잘 수행되다가 한번씩 위와 같은 에러가 발생하네요.

caver 버전은 1.6.3, 1.6.4 둘 다 사용해보았는데, 동일합니다.

감사합니다.

안녕하세요.
알려주신 에러 로그만으로는 알려주신 이슈를 파악하기가 힘든데요.

혹시 작업중이신 코드나 이슈를 재현가능한 샘플 코드 전달 가능하실까요?

감사합니다.

1 Like

그리고 Invalid response : null이라는 message는 노드에 API를 call한뒤에 응답값을 받지못하고 timeout이 날 경우에 저렇게 error message를 출력합니다.

참고부탁드립니다.

답변 정말 감사드립니다.
관련하여 한가지 질문을 더 드리고자 하는데
노드에 API를 call한뒤에 대기 timer가 default로 얼마인지 혹시 알 수 있을까요? 그리고 그 값을 변경할 수도 있는지요? 그 방법에 대해서도 문의 드립니다.

감사합니다.

안녕하세요. @hlib 님.

제가 이 스레드를 놓치고 있었네요. 다음에는 스레드를 놓치지 않을수 있도록 담당자를 멘션해서 댓글 부탁드립니다!

일단 제가 위에 답변 달아놓은 내용은 제가 코드를 잘못분석해서 알려드린 내용인 것 같습니다. "Invalid response null"의 message는 노드에 request를 전송 후 node가 response를 null로 줬을 때 발생하는 에러메세지 입니다.

이럴 경우, node에서 어떤 이유에서인지는 모르겠지만 잘못된 response를 보낸 것이기 때문에, node에 request를 보낸 client쪽에서 후처리를 해주는 것이 맞을 것 같습니다.

참고할 코드 알려 드립니다.

잘못된 정보를 드려 개발하시는데 혼선을 드려서 죄송합니다.
궁금한 점 있으면 댓글 부탁드리겠습니다.
감사합니다.

1 Like