Open liuzihua699 opened 3 years ago
我也遇到了
想用到产品里 遇到这个问题 有点不敢用了
+1,有进展了吗,单条写没问题,一次多条就报错了,具体能多少也不固定,有时候能一次写10条,有时候4个就开始报这个错了。 现在一次一条太连续也不行了,得隔十几秒。
我发现楼主和其他人已经提了对这个问题的PR #38 #24 ,但是作者并没有进一步合并。
这个问题的关键在于ExampleServiceImpl.java的这里
else if (raftNode.getLeaderId() != raftNode.getLocalServer().getServerId()) {
onLeaderChangeEvent();
ExampleService exampleService = BrpcProxy.getProxy(leaderRpcClient, ExampleService.class);
ExampleProto.SetResponse responseFromLeader = exampleService.set(request);
responseBuilder.mergeFrom(responseFromLeader);
}
这里会在每一次有用户set请求时,使用leaderRpcClient生成一个新的ExampleService实例。但是对于同一个RpcClient对象来说,多次使用BrpcProxy.getProxy生成新的Service实例是不被brpc-java允许的。 因此这里应该重写下代码,不在leaderRpcClient没有被赋值为新对象的情况下重新生成ExampleService实例。具体可以参考楼主和其他人的PR。
问题描述:遇到了和 #23 描述的情况,当客户端发起顺序/并发写请求时报错 问题复现:
使用如下代码测试写功能会报错:
异常如下: