Closed qiujiayu closed 8 months ago
遇到实际问题了吗? PingRequestProcessor 没有指定 executor,但是其他的所有 processor 都有指定 executor,也就是基本相当于 PingRequestProcessor 独占了 default executor
com.alipay.remoting.ProcessorManager#getDefaultExecutor(); 还被用于处理 bolt rpc 超时,如果有大量RPC超时,default executor 有堆积时,会造成心跳也超时。
我们可以为这个方法增加一个 pingExecutor 参数
当然,我还希望原有方法签名保留,它会是这样:
public static void addRaftRequestProcessors(final RpcServer rpcServer, final Executor raftExecutor,
final Executor cliExecutor) {
addRaftRequestProcessors(rpcServer, raftExecutor, null, cliExecutor)
}
也就说,默认的 ping executor 就是 null,对此你有其他的意见吗?
我们可以为这个方法增加一个 pingExecutor 参数
当然,我还希望原有方法签名保留,它会是这样:
public static void addRaftRequestProcessors(final RpcServer rpcServer, final Executor raftExecutor, final Executor cliExecutor) { addRaftRequestProcessors(rpcServer, raftExecutor, null, cliExecutor) }
也就说,默认的 ping executor 就是 null,对此你有其他的意见吗?
没有,那我按这个方法改一下。
感谢,我会把这个 pr 加到新的 release 中
PingRequestProcessor 中 executor() 返回 null, 则会使用 com.alipay.remoting.ProcessorManager#getDefaultExecutor(); 当这个线程池满了,或队列中比较多数据时,会影响 PingRequestProcessor 的执行,从而影响集群的状态。 那么 PingRequestProcessor 是否有必要设置单独的 Executor?