现象:trident-java 调用接口服务,有时候会出现阻塞的情况,导致服务一直假死
分析问题原因:
trx用GRPC提供钱包相关服务的,如获取区块,扫描交易,发起交易等等,GRPC不设置超时时间,会导致一直处于阻塞状态
解决办法:增加超时时间即可,示例代码如下
public ApiWrapper(String grpcEndpoint, String grpcEndpointSolidity, String hexPrivateKey) {
channel = ManagedChannelBuilder.forTarget(grpcEndpoint).usePlaintext().build();
channelSolidity = ManagedChannelBuilder.forTarget(grpcEndpointSolidity).usePlaintext().build();
blockingStub = WalletGrpc.newBlockingStub(channel);
// 增加超时时间
blockingStub.withDeadlineAfter(10, TimeUnit.SECONDS);
blockingStubSolidity = WalletSolidityGrpc.newBlockingStub(channelSolidity);
keyPair = new KeyPair(hexPrivateKey);
}