Skip to content

Make TransportNodesAction finishHim Execute on Configured Executor (#62753)#62955

Merged
original-brownbear merged 1 commit intoelastic:7.xfrom
original-brownbear:62753-7.x
Sep 28, 2020
Merged

Make TransportNodesAction finishHim Execute on Configured Executor (#62753)#62955
original-brownbear merged 1 commit intoelastic:7.xfrom
original-brownbear:62753-7.x

Conversation

@original-brownbear
Copy link
Copy Markdown
Contributor

Currently, finishHim can either execute on the specified executor
(in the less likely case that the local node request is the last to arrive)
or on a transport thread.
In case of e.g. org.elasticsearch.action.admin.cluster.stats.TransportClusterStatsAction
this leads to an expensive execution that deserializes all mapping metadata in the cluster
running on the transport thread and destabilizing the cluster. In case of this transport
action it was specifically moved to the MANAGEMENT thread to avoid the high cost of processing
the stats requests on the nodes during fan-out but that did not cover the final execution
on the node that received the initial request. This PR adds to ability to optionally specify the executor for the final step of the
nodes request execution and uses that to work around the issue for the slow TransportClusterStatsAction.

Note: the specific problem that motivated this PR is essentially the same as #57937 where we moved the execution off the transport and on the management thread as a fix as well.

backport of #62753

…62753)

Currently, `finishHim` can either execute on the specified executor
(in the less likely case that the local node request is the last to arrive)
or on a transport thread.
In case of e.g. `org.elasticsearch.action.admin.cluster.stats.TransportClusterStatsAction`
this leads to an expensive execution that deserializes all mapping metadata in the cluster
running on the transport thread and destabilizing the cluster. In case of this transport
action it was specifically moved to the `MANAGEMENT` thread to avoid the high cost of processing
the stats requests on the nodes during fan-out but that did not cover the final execution
on the node that received the initial request. This PR  adds to ability to optionally specify the executor for the final step of the
nodes request execution and uses that to work around the issue for the slow `TransportClusterStatsAction`.

Note: the specific problem that motivated this PR is essentially the same as #57937 where we moved the execution off the transport and on the management thread as a fix as well.
@original-brownbear original-brownbear added :Distributed/Network Http and internode communication implementations backport labels Sep 28, 2020
@elasticmachine
Copy link
Copy Markdown
Collaborator

Pinging @elastic/es-distributed (:Distributed/Network)

@elasticmachine elasticmachine added the Team:Distributed Meta label for distributed team. label Sep 28, 2020
@original-brownbear original-brownbear merged commit 2247ab3 into elastic:7.x Sep 28, 2020
@original-brownbear original-brownbear deleted the 62753-7.x branch September 28, 2020 16:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport :Distributed/Network Http and internode communication implementations Team:Distributed Meta label for distributed team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants