Class TransportWriteAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
java.lang.Object
org.elasticsearch.action.support.TransportAction<Request,Response>
org.elasticsearch.action.support.replication.TransportReplicationAction<Request,ReplicaRequest,Response>
org.elasticsearch.action.support.replication.TransportWriteAction<Request,ReplicaRequest,Response>
- Direct Known Subclasses:
RetentionLeaseSyncAction
,TransportResyncReplicationAction
,TransportShardBulkAction
public abstract class TransportWriteAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse> extends TransportReplicationAction<Request,ReplicaRequest,Response>
Base class for transport actions that modify data in some shard like index, delete, and shardBulk.
Allows performing async actions (e.g. refresh) after performing write operations on primary and replica shards
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
TransportWriteAction.WritePrimaryResult<ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
Result of taking the action on the primary.static class
TransportWriteAction.WriteReplicaResult<ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>>
Result of taking the action on the replica.Nested classes/interfaces inherited from class org.elasticsearch.action.support.replication.TransportReplicationAction
TransportReplicationAction.ConcreteReplicaRequest<R extends TransportRequest>, TransportReplicationAction.ConcreteShardRequest<R extends TransportRequest>, TransportReplicationAction.PrimaryResult<ReplicaRequest extends ReplicationRequest<ReplicaRequest>,Response extends ReplicationResponse>, TransportReplicationAction.ReplicaResponse, TransportReplicationAction.ReplicaResult, TransportReplicationAction.ReplicasProxy, TransportReplicationAction.RetryOnReplicaException
-
Field Summary
Fields Modifier and Type Field Description protected IndexingPressure
indexingPressure
protected SystemIndices
systemIndices
Fields inherited from class org.elasticsearch.action.support.replication.TransportReplicationAction
clusterService, executor, forceExecutionOnPrimary, indicesService, REPLICATION_INITIAL_RETRY_BACKOFF_BOUND, REPLICATION_RETRY_TIMEOUT, shardStateAction, threadPool, transportOptions, transportPrimaryAction, transportReplicaAction, transportService
Fields inherited from class org.elasticsearch.action.support.TransportAction
actionName, logger, taskManager
-
Constructor Summary
Constructors Modifier Constructor Description protected
TransportWriteAction(Settings settings, java.lang.String actionName, TransportService transportService, ClusterService clusterService, IndicesService indicesService, ThreadPool threadPool, ShardStateAction shardStateAction, ActionFilters actionFilters, Writeable.Reader<Request> request, Writeable.Reader<ReplicaRequest> replicaRequest, java.util.function.Function<IndexShard,java.lang.String> executorFunction, boolean forceExecutionOnPrimary, IndexingPressure indexingPressure, SystemIndices systemIndices)
-
Method Summary
Modifier and Type Method Description protected Releasable
checkOperationLimits(Request request)
protected Releasable
checkPrimaryLimits(Request request, boolean rerouteWasLocal, boolean localRerouteInitiatedByNodeClient)
protected Releasable
checkReplicaLimits(ReplicaRequest request)
protected abstract void
dispatchedShardOperationOnPrimary(Request request, IndexShard primary, ActionListener<TransportReplicationAction.PrimaryResult<ReplicaRequest,Response>> listener)
protected abstract void
dispatchedShardOperationOnReplica(ReplicaRequest request, IndexShard replica, ActionListener<TransportReplicationAction.ReplicaResult> listener)
protected java.lang.String
executor(IndexShard shard)
protected boolean
force(ReplicatedWriteRequest<?> request)
protected ClusterBlockLevel
globalBlockLevel()
Cluster level block to check before request execution.ClusterBlockLevel
indexBlockLevel()
Index level block to check before request execution.protected boolean
isSystemShard(ShardId shardId)
static Translog.Location
locationToSync(Translog.Location current, Translog.Location next)
protected ReplicationOperation.Replicas<ReplicaRequest>
newReplicasProxy()
protected long
primaryOperationSize(Request request)
protected long
replicaOperationSize(ReplicaRequest request)
protected void
shardOperationOnPrimary(Request request, IndexShard primary, ActionListener<TransportReplicationAction.PrimaryResult<ReplicaRequest,Response>> listener)
Called on the primary with a reference to the primary IndexShard to modify.protected void
shardOperationOnReplica(ReplicaRequest request, IndexShard replica, ActionListener<TransportReplicationAction.ReplicaResult> listener)
Called once per replica with a reference to the replica IndexShard to modify.protected static Translog.Location
syncOperationResultOrThrow(Engine.Result operationResult, Translog.Location currentLocation)
Syncs operation result to the translog or throws a shard not available failureMethods inherited from class org.elasticsearch.action.support.replication.TransportReplicationAction
acquirePrimaryOperationPermit, acquireReplicaOperationPermit, adaptResponse, doExecute, handlePrimaryRequest, handleReplicaRequest, newResponseInstance, resolveRequest, retryPrimaryException, transportOptions
Methods inherited from class org.elasticsearch.action.support.TransportAction
execute, execute, execute
-
Field Details
-
Constructor Details
-
TransportWriteAction
protected TransportWriteAction(Settings settings, java.lang.String actionName, TransportService transportService, ClusterService clusterService, IndicesService indicesService, ThreadPool threadPool, ShardStateAction shardStateAction, ActionFilters actionFilters, Writeable.Reader<Request> request, Writeable.Reader<ReplicaRequest> replicaRequest, java.util.function.Function<IndexShard,java.lang.String> executorFunction, boolean forceExecutionOnPrimary, IndexingPressure indexingPressure, SystemIndices systemIndices)
-
-
Method Details
-
executor
-
checkOperationLimits
- Overrides:
checkOperationLimits
in classTransportReplicationAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
-
force
-
isSystemShard
-
checkPrimaryLimits
protected Releasable checkPrimaryLimits(Request request, boolean rerouteWasLocal, boolean localRerouteInitiatedByNodeClient)- Overrides:
checkPrimaryLimits
in classTransportReplicationAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
-
primaryOperationSize
-
checkReplicaLimits
- Overrides:
checkReplicaLimits
in classTransportReplicationAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
-
replicaOperationSize
-
syncOperationResultOrThrow
protected static Translog.Location syncOperationResultOrThrow(Engine.Result operationResult, Translog.Location currentLocation) throws java.lang.ExceptionSyncs operation result to the translog or throws a shard not available failure- Throws:
java.lang.Exception
-
locationToSync
-
newReplicasProxy
- Overrides:
newReplicasProxy
in classTransportReplicationAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
-
shardOperationOnPrimary
protected void shardOperationOnPrimary(Request request, IndexShard primary, ActionListener<TransportReplicationAction.PrimaryResult<ReplicaRequest,Response>> listener)Called on the primary with a reference to the primary IndexShard to modify.- Specified by:
shardOperationOnPrimary
in classTransportReplicationAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
- Parameters:
listener
- listener for the result of the operation on primary, including current translog location and operation response and failure async refresh is performed on theprimary
shard according to theRequest
refresh policyrequest
- the request to the primary shardprimary
- the primary shard to perform the operation on
-
dispatchedShardOperationOnPrimary
protected abstract void dispatchedShardOperationOnPrimary(Request request, IndexShard primary, ActionListener<TransportReplicationAction.PrimaryResult<ReplicaRequest,Response>> listener) -
shardOperationOnReplica
protected void shardOperationOnReplica(ReplicaRequest request, IndexShard replica, ActionListener<TransportReplicationAction.ReplicaResult> listener)Called once per replica with a reference to the replica IndexShard to modify.- Specified by:
shardOperationOnReplica
in classTransportReplicationAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
- Parameters:
listener
- listener for the result of the operation on replica, including current translog location and operation response and failure async refresh is performed on thereplica
shard according to theReplicaRequest
refresh policyrequest
- the request to the replica shardreplica
- the replica shard to perform the operation on
-
dispatchedShardOperationOnReplica
protected abstract void dispatchedShardOperationOnReplica(ReplicaRequest request, IndexShard replica, ActionListener<TransportReplicationAction.ReplicaResult> listener) -
globalBlockLevel
Description copied from class:TransportReplicationAction
Cluster level block to check before request execution. Returning null means that no blocks need to be checked.- Overrides:
globalBlockLevel
in classTransportReplicationAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
-
indexBlockLevel
Description copied from class:TransportReplicationAction
Index level block to check before request execution. Returning null means that no blocks need to be checked.- Overrides:
indexBlockLevel
in classTransportReplicationAction<Request extends ReplicatedWriteRequest<Request>,ReplicaRequest extends ReplicatedWriteRequest<ReplicaRequest>,Response extends ReplicationResponse & WriteResponse>
-