@@ -129,40 +129,19 @@ public TransportFieldCapabilitiesAction(
129129
130130 @ Override
131131 protected void doExecute (Task task , FieldCapabilitiesRequest request , final ActionListener <FieldCapabilitiesResponse > listener ) {
132- executeRequest (
133- task ,
134- request ,
135- (transportService , conn , fieldCapabilitiesRequest , responseHandler ) -> transportService .sendRequest (
136- conn ,
137- REMOTE_TYPE .name (),
138- fieldCapabilitiesRequest ,
139- TransportRequestOptions .EMPTY ,
140- responseHandler
141- ),
142- listener
143- );
132+ executeRequest (task , request , listener );
144133 }
145134
146- public void executeRequest (
147- Task task ,
148- FieldCapabilitiesRequest request ,
149- LinkedRequestExecutor linkedRequestExecutor ,
150- ActionListener <FieldCapabilitiesResponse > listener
151- ) {
135+ public void executeRequest (Task task , FieldCapabilitiesRequest request , ActionListener <FieldCapabilitiesResponse > listener ) {
152136 // workaround for https://github.com/elastic/elasticsearch/issues/97916 - TODO remove this when we can
153- searchCoordinationExecutor .execute (ActionRunnable .wrap (listener , l -> doExecuteForked (task , request , linkedRequestExecutor , l )));
137+ searchCoordinationExecutor .execute (ActionRunnable .wrap (listener , l -> doExecuteForked (task , request , l )));
154138 }
155139
156- private void doExecuteForked (
157- Task task ,
158- FieldCapabilitiesRequest request ,
159- LinkedRequestExecutor linkedRequestExecutor ,
160- ActionListener <FieldCapabilitiesResponse > listener
161- ) {
140+ private void doExecuteForked (Task task , FieldCapabilitiesRequest request , ActionListener <FieldCapabilitiesResponse > listener ) {
162141 if (ccsCheckCompatibility ) {
163142 checkCCSVersionCompatibility (request );
164143 }
165- final Executor singleThreadedExecutor = buildSingleThreadedExecutor ();
144+ final Executor singleThreadedExecutor = buildSingleThreadedExecutor (searchCoordinationExecutor , LOGGER );
166145 assert task instanceof CancellableTask ;
167146 final CancellableTask fieldCapTask = (CancellableTask ) task ;
168147 // retrieve the initial timestamp in case the action is a cross cluster search
@@ -322,10 +301,11 @@ private void doExecuteForked(
322301 true ,
323302 ActionListener .releaseAfter (remoteListener , refs .acquire ())
324303 ).delegateFailure (
325- (responseListener , conn ) -> linkedRequestExecutor .executeRemoteRequest (
326- transportService ,
304+ (responseListener , conn ) -> transportService .sendRequest (
327305 conn ,
306+ REMOTE_TYPE .name (),
328307 remoteRequest ,
308+ TransportRequestOptions .EMPTY ,
329309 new ActionListenerResponseHandler <>(responseListener , FieldCapabilitiesResponse ::new , singleThreadedExecutor )
330310 )
331311 )
@@ -339,7 +319,7 @@ private void doExecuteForked(
339319 }
340320 }
341321
342- private Executor buildSingleThreadedExecutor () {
322+ public static Executor buildSingleThreadedExecutor (Executor searchCoordinationExecutor , Logger logger ) {
343323 final ThrottledTaskRunner throttledTaskRunner = new ThrottledTaskRunner ("field_caps" , 1 , searchCoordinationExecutor );
344324 return r -> throttledTaskRunner .enqueueTask (new ActionListener <>() {
345325 @ Override
@@ -362,16 +342,7 @@ public void onFailure(Exception e) {
362342 });
363343 }
364344
365- public interface LinkedRequestExecutor {
366- void executeRemoteRequest (
367- TransportService transportService ,
368- Transport .Connection conn ,
369- FieldCapabilitiesRequest remoteRequest ,
370- ActionListenerResponseHandler <FieldCapabilitiesResponse > responseHandler
371- );
372- }
373-
374- private static void checkIndexBlocks (ProjectState projectState , String [] concreteIndices ) {
345+ public static void checkIndexBlocks (ProjectState projectState , String [] concreteIndices ) {
375346 var blocks = projectState .blocks ();
376347 var projectId = projectState .projectId ();
377348 if (blocks .global (projectId ).isEmpty () && blocks .indices (projectId ).isEmpty ()) {
@@ -421,7 +392,7 @@ private static void mergeIndexResponses(
421392 }
422393 }
423394
424- private static FieldCapabilitiesRequest prepareRemoteRequest (
395+ public static FieldCapabilitiesRequest prepareRemoteRequest (
425396 String clusterAlias ,
426397 FieldCapabilitiesRequest request ,
427398 OriginalIndices originalIndices ,
@@ -615,10 +586,10 @@ private static void innerMerge(
615586 * This collector can contain a failure for an index even if one of its shards was successful. When building the final
616587 * list, these failures will be skipped because they have no affect on the final response.
617588 */
618- private static final class FailureCollector {
589+ public static final class FailureCollector {
619590 private final Map <String , Exception > failuresByIndex = new HashMap <>();
620591
621- List <FieldCapabilitiesFailure > build (Set <String > successfulIndices ) {
592+ public List <FieldCapabilitiesFailure > build (Set <String > successfulIndices ) {
622593 Map <Tuple <String , String >, FieldCapabilitiesFailure > indexFailures = new HashMap <>();
623594 for (Map .Entry <String , Exception > failure : failuresByIndex .entrySet ()) {
624595 String index = failure .getKey ();
@@ -647,15 +618,15 @@ List<FieldCapabilitiesFailure> build(Set<String> successfulIndices) {
647618 return new ArrayList <>(indexFailures .values ());
648619 }
649620
650- void collect (String index , Exception e ) {
621+ public void collect (String index , Exception e ) {
651622 failuresByIndex .putIfAbsent (index , e );
652623 }
653624
654- void clear () {
625+ public void clear () {
655626 failuresByIndex .clear ();
656627 }
657628
658- boolean isEmpty () {
629+ public boolean isEmpty () {
659630 return failuresByIndex .isEmpty ();
660631 }
661632 }
@@ -718,8 +689,8 @@ public void messageReceived(FieldCapabilitiesNodeRequest request, TransportChann
718689 }
719690 }
720691
721- private static class ForkingOnFailureActionListener <Response > extends AbstractThreadedActionListener <Response > {
722- ForkingOnFailureActionListener (Executor executor , boolean forceExecution , ActionListener <Response > delegate ) {
692+ public static class ForkingOnFailureActionListener <Response > extends AbstractThreadedActionListener <Response > {
693+ public ForkingOnFailureActionListener (Executor executor , boolean forceExecution , ActionListener <Response > delegate ) {
723694 super (executor , forceExecution , delegate );
724695 }
725696
0 commit comments