Skip to content

Commit 3d7e753

Browse files
committed
Allow subclasses to control whether primary action is forced
Today this requires overriding and reimplementing registerRequestHandlers() but it's clearer to highlight the difference like this
1 parent 83c6c67 commit 3d7e753

File tree

2 files changed

+11
-21
lines changed

2 files changed

+11
-21
lines changed

server/src/main/java/org/elasticsearch/action/resync/TransportResyncReplicationAction.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,18 +64,9 @@ public TransportResyncReplicationAction(Settings settings, TransportService tran
6464
}
6565

6666
@Override
67-
protected void registerRequestHandlers(String actionName, TransportService transportService, Supplier<ResyncReplicationRequest> request,
68-
Supplier<ResyncReplicationRequest> replicaRequest, String executor) {
69-
transportService.registerRequestHandler(actionName, request, ThreadPool.Names.SAME, this::handleOperationRequest);
67+
protected boolean forcePrimaryActionExecution() {
7068
// we should never reject resync because of thread pool capacity on primary
71-
transportService.registerRequestHandler(transportPrimaryAction,
72-
() -> new ConcreteShardRequest<>(request),
73-
executor, true, true,
74-
this::handlePrimaryRequest);
75-
transportService.registerRequestHandler(transportReplicaAction,
76-
() -> new ConcreteReplicaRequest<>(replicaRequest),
77-
executor, true, true,
78-
this::handleReplicaRequest);
69+
return true;
7970
}
8071

8172
@Override

server/src/main/java/org/elasticsearch/action/support/replication/TransportReplicationAction.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@
7272
import org.elasticsearch.transport.TransportChannel;
7373
import org.elasticsearch.transport.TransportException;
7474
import org.elasticsearch.transport.TransportRequest;
75-
import org.elasticsearch.transport.TransportRequestHandler;
7675
import org.elasticsearch.transport.TransportRequestOptions;
7776
import org.elasticsearch.transport.TransportResponse;
7877
import org.elasticsearch.transport.TransportResponse.Empty;
@@ -145,21 +144,21 @@ protected TransportReplicationAction(Settings settings, String actionName, Trans
145144

146145
this.transportPrimaryAction = actionName + "[p]";
147146
this.transportReplicaAction = actionName + "[r]";
148-
registerRequestHandlers(actionName, transportService, request, replicaRequest, executor);
147+
148+
transportService.registerRequestHandler(actionName, request, ThreadPool.Names.SAME, this::handleOperationRequest);
149+
transportService.registerRequestHandler(transportPrimaryAction, () -> new ConcreteShardRequest<>(request), executor, true,
150+
forcePrimaryActionExecution(), this::handlePrimaryRequest);
151+
// we must never reject on because of thread pool capacity on replicas
152+
transportService.registerRequestHandler(
153+
transportReplicaAction, () -> new ConcreteReplicaRequest<>(replicaRequest), executor, true, true, this::handleReplicaRequest);
149154

150155
this.transportOptions = transportOptions(settings);
151156

152157
this.syncGlobalCheckpointAfterOperation = syncGlobalCheckpointAfterOperation;
153158
}
154159

155-
protected void registerRequestHandlers(String actionName, TransportService transportService, Supplier<Request> request,
156-
Supplier<ReplicaRequest> replicaRequest, String executor) {
157-
transportService.registerRequestHandler(actionName, request, ThreadPool.Names.SAME, this::handleOperationRequest);
158-
transportService.registerRequestHandler(transportPrimaryAction, () -> new ConcreteShardRequest<>(request), executor,
159-
this::handlePrimaryRequest);
160-
// we must never reject on because of thread pool capacity on replicas
161-
transportService.registerRequestHandler(
162-
transportReplicaAction, () -> new ConcreteReplicaRequest<>(replicaRequest), executor, true, true, this::handleReplicaRequest);
160+
protected boolean forcePrimaryActionExecution() {
161+
return false;
163162
}
164163

165164
@Override

0 commit comments

Comments
 (0)