Module org.elasticsearch.server
Class TransportBroadcastByNodeAction<Request extends BroadcastRequest<Request>,Response extends BroadcastResponse,ShardOperationResult extends Writeable>
java.lang.Object
org.elasticsearch.action.support.TransportAction<Request,Response>
org.elasticsearch.action.support.HandledTransportAction<Request,Response>
org.elasticsearch.action.support.broadcast.node.TransportBroadcastByNodeAction<Request,Response,ShardOperationResult>
- Type Parameters:
Request- the underlying client requestResponse- the response to the client requestShardOperationResult- per-shard operation results
- Direct Known Subclasses:
TransportClearIndicesCacheAction,TransportFieldUsageAction,TransportForceMergeAction,TransportIndicesSegmentsAction,TransportIndicesStatsAction,TransportRecoveryAction
public abstract class TransportBroadcastByNodeAction<Request extends BroadcastRequest<Request>,Response extends BroadcastResponse,ShardOperationResult extends Writeable>
extends HandledTransportAction<Request,Response>
Abstraction for transporting aggregated shard-level operations in a single request (NodeRequest) per-node
and executing the shard-level operations serially on the receiving node. Each shard-level operation can produce a
result (ShardOperationResult), these per-node shard-level results are aggregated into a single result
(BroadcastByNodeResponse) to the coordinating node. These per-node results are aggregated into a single result (Result)
to the client.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classstatic final classCan be used for implementations ofshardOperationfor which there is no shard-level return value.class -
Field Summary
Fields inherited from class org.elasticsearch.action.support.TransportAction
actionName, logger, taskManager -
Constructor Summary
ConstructorsConstructorDescriptionTransportBroadcastByNodeAction(String actionName, ClusterService clusterService, TransportService transportService, ActionFilters actionFilters, IndexNameExpressionResolver indexNameExpressionResolver, Writeable.Reader<Request> request, String executor) TransportBroadcastByNodeAction(String actionName, ClusterService clusterService, TransportService transportService, ActionFilters actionFilters, IndexNameExpressionResolver indexNameExpressionResolver, Writeable.Reader<Request> request, String executor, boolean canTripCircuitBreaker) -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract ClusterBlockExceptioncheckGlobalBlock(ClusterState state, Request request) Executes a global block check before polling the cluster state.protected abstract ClusterBlockExceptioncheckRequestBlock(ClusterState state, Request request, String[] concreteIndices) Executes a global request-level check before polling the cluster state.protected voiddoExecute(Task task, Request request, ActionListener<Response> listener) protected abstract ResponsenewResponse(Request request, int totalShards, int successfulShards, int failedShards, List<ShardOperationResult> results, List<DefaultShardOperationFailedException> shardFailures, ClusterState clusterState) Creates a new response to the underlying request.protected abstract RequestDeserialize a request from an input streamprotected abstract ShardOperationResultDeserialize a shard-level result from an input streamprotected String[]resolveConcreteIndexNames(ClusterState clusterState, Request request) Resolves a list of concrete index names.protected abstract voidshardOperation(Request request, ShardRouting shardRouting, Task task, ActionListener<ShardOperationResult> listener) Executes the shard-level operation.protected abstract ShardsIteratorshards(ClusterState clusterState, Request request, String[] concreteIndices) Determines the shards on which this operation will be executed on.Methods inherited from class org.elasticsearch.action.support.TransportAction
execute
-
Constructor Details
-
TransportBroadcastByNodeAction
public TransportBroadcastByNodeAction(String actionName, ClusterService clusterService, TransportService transportService, ActionFilters actionFilters, IndexNameExpressionResolver indexNameExpressionResolver, Writeable.Reader<Request> request, String executor) -
TransportBroadcastByNodeAction
public TransportBroadcastByNodeAction(String actionName, ClusterService clusterService, TransportService transportService, ActionFilters actionFilters, IndexNameExpressionResolver indexNameExpressionResolver, Writeable.Reader<Request> request, String executor, boolean canTripCircuitBreaker)
-
-
Method Details
-
readShardResult
Deserialize a shard-level result from an input stream- Parameters:
in- input stream- Returns:
- a deserialized shard-level result
- Throws:
IOException
-
newResponse
protected abstract Response newResponse(Request request, int totalShards, int successfulShards, int failedShards, List<ShardOperationResult> results, List<DefaultShardOperationFailedException> shardFailures, ClusterState clusterState) Creates a new response to the underlying request.- Parameters:
request- the underlying requesttotalShards- the total number of shards considered for execution of the operationsuccessfulShards- the total number of shards for which execution of the operation was successfulfailedShards- the total number of shards for which execution of the operation failedresults- the per-node aggregated shard-level resultsshardFailures- the exceptions corresponding to shard operation failuresclusterState- the cluster state- Returns:
- the response
-
readRequestFrom
Deserialize a request from an input stream- Parameters:
in- input stream- Returns:
- a de-serialized request
- Throws:
IOException
-
shardOperation
protected abstract void shardOperation(Request request, ShardRouting shardRouting, Task task, ActionListener<ShardOperationResult> listener) Executes the shard-level operation. This method is called once per shard serially on the receiving node. This method should not throw an exception, but pass the exception to the listener instead.- Parameters:
request- the node-level requestshardRouting- the shard on which to execute the operationtask- the task for this node-level requestlistener- the listener to notify with the result of the shard-level operation
-
shards
protected abstract ShardsIterator shards(ClusterState clusterState, Request request, String[] concreteIndices) Determines the shards on which this operation will be executed on. The operation is executed once per shard.- Parameters:
clusterState- the cluster staterequest- the underlying requestconcreteIndices- the concrete indices on which to execute the operation- Returns:
- the shards on which to execute the operation
-
checkGlobalBlock
Executes a global block check before polling the cluster state.- Parameters:
state- the cluster staterequest- the underlying request- Returns:
- a non-null exception if the operation is blocked
-
checkRequestBlock
protected abstract ClusterBlockException checkRequestBlock(ClusterState state, Request request, String[] concreteIndices) Executes a global request-level check before polling the cluster state.- Parameters:
state- the cluster staterequest- the underlying requestconcreteIndices- the concrete indices on which to execute the operation- Returns:
- a non-null exception if the operation if blocked
-
resolveConcreteIndexNames
Resolves a list of concrete index names. Override this if index names should be resolved differently than normal.- Parameters:
clusterState- the cluster staterequest- the underlying request- Returns:
- a list of concrete index names that this action should operate on
-
doExecute
- Specified by:
doExecutein classTransportAction<Request extends BroadcastRequest<Request>,Response extends BroadcastResponse>
-