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收到数据后直接处理。