1. 程式人生 > >es 原始碼改動注意事項

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收到資料後直接處理。