es 源码改动注意事项

1:不要阻塞Netty接收数据线程transport_client_boss,来等待返回结果,因为远程结果可能会刚好发送到该阻塞线程绑定的channel上。导致无法处理接收的数据,一直阻塞。因节点之间使用transport发送数据,所以http_server_worker阻塞,不会引起无法处理远程结果。

例如:TransportIndicesStatsAction.onCompletion的executor是SAME,由transport_client_boss接收到数据直接处理。如果在onCompletion中发送请求,且阻塞等待结果。当远程结果刚好由该阻塞的transport_client_boss来处理时,就陷入了线程死锁。
一般ResponseHandler的executor是SAME,transport_client_boss收到数据后直接处理。

猜你喜欢

转载自www.cnblogs.com/vsop/p/10162582.html
今日推荐