기존에 EN노드를 운영하면서 운영비용이 증가하여 KAS 유료요금제로 가입하고 Caver 객체를 생성할 때 new Caver(new HttpService(""https://node-api.klaytnapi.com/v1/klaytn));와 같이 객체를 생성해서 transfer함수를 호출하였습니다.
지난주 금요일부터 변경을 하였고 변경한 이후로 "Invalid response received: 403"오류가 자주 발생하고 있어
문의드리자 합니다.
서버에는 아래와 같이 남아있었고
22-02-06 22:00:05:468 DEBUG HikariPool-1 housekeeper c.z.h.p.HikariPool:414 - HikariPool-1 - Pool stats (total=4, active=0, idle=4, waiting=0)
22-02-06 22:00:05:468 DEBUG HikariPool-1 housekeeper c.z.h.p.HikariPool:521 - HikariPool-1 - Fill pool skipped, pool has sufficient level or currently being filled (queueDepth=0.
22-02-06 22:00:05:750 WARN pool-5-thread-4 i.m.t.s.TokenService:717 - Exception:{}
org.web3j.protocol.exceptions.ClientConnectionException: Invalid response received: 403;
at org.web3j.protocol.http.HttpService.performIO(HttpService.java:173)
at org.web3j.protocol.Service.send(Service.java:48)
at org.web3j.protocol.core.Request.send(Request.java:87)
at io.token.klaytn.RoleBasedKeyUtils.getAccountType(RoleBasedKeyUtils.java:480)
at io.token.klaytn.RoleBasedKeyUtils.getPrivateKering(RoleBasedKeyUtils.java:110)
at io.token.klaytn.RoleBasedKeyUtils.transfer(RoleBasedKeyUtils.java:318)
at io.token.service.TokenApiService$SyncKCTTask.process(TokenApiService.java:436)
at io.token.disruptor.MessageProcessor.onEvent(MessageProcessor.java:38)
at io.token.disruptor.MessageProcessor.onEvent(MessageProcessor.java:10)
at com.lmax.disruptor.WorkProcessor.run(WorkProcessor.java:143)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
AWS에서 EN노드를 구성하고 transfer함수를 호출 했을 때는 자주 발생하지 않았습니다.
내용(문의 유형에 해당하는 항목 작성) :
답변을 기다리면서 로그를 조금 더 확인해봤는데 해당 오류는 "caver.rpc.klay.getAccountKey(targetAddress).send();"로 지갑의 타입을 확인하는 함수를 호출했던 부분에서 오류가 발생하였습니다.
테스트한 지갑주소는 "0xe82ed0bb7c9318c6ae0b8b3988ad5182cd64a28d"이었고 해당 오류는 try~catch로 처리하도록 조치하였습니다.
여기서 문의드릴 사항은 Caver(new HttpService(""https://node-api.klaytnapi.com/v1/klaytn));으로 Caver객체를 생성했을 때 해당 메소드는 지원하지 않는지 문의드립니다.
// In the caver, almost everything starts with the caver. Let's create a caver instance
HttpService httpService = new HttpService(nodeApiUrl);
httpService.addHeader("Authorization", Credentials.basic(accessKeyId, secretAccessKey));
httpService.addHeader("x-chain-id", chainId);
Caver caver = new Caver(httpService);
HashMap<String, String> headers = ((HttpService)caver.currentProvider).getHeaders();
System.out.println(headers);