@@ -129,40 +129,19 @@ public TransportFieldCapabilitiesAction(
129
129
130
130
@ Override
131
131
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 );
144
133
}
145
134
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 ) {
152
136
// 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 )));
154
138
}
155
139
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 ) {
162
141
if (ccsCheckCompatibility ) {
163
142
checkCCSVersionCompatibility (request );
164
143
}
165
- final Executor singleThreadedExecutor = buildSingleThreadedExecutor ();
144
+ final Executor singleThreadedExecutor = buildSingleThreadedExecutor (searchCoordinationExecutor , LOGGER );
166
145
assert task instanceof CancellableTask ;
167
146
final CancellableTask fieldCapTask = (CancellableTask ) task ;
168
147
// retrieve the initial timestamp in case the action is a cross cluster search
@@ -322,10 +301,11 @@ private void doExecuteForked(
322
301
true ,
323
302
ActionListener .releaseAfter (remoteListener , refs .acquire ())
324
303
).delegateFailure (
325
- (responseListener , conn ) -> linkedRequestExecutor .executeRemoteRequest (
326
- transportService ,
304
+ (responseListener , conn ) -> transportService .sendRequest (
327
305
conn ,
306
+ REMOTE_TYPE .name (),
328
307
remoteRequest ,
308
+ TransportRequestOptions .EMPTY ,
329
309
new ActionListenerResponseHandler <>(responseListener , FieldCapabilitiesResponse ::new , singleThreadedExecutor )
330
310
)
331
311
)
@@ -339,7 +319,7 @@ private void doExecuteForked(
339
319
}
340
320
}
341
321
342
- private Executor buildSingleThreadedExecutor () {
322
+ public static Executor buildSingleThreadedExecutor (Executor searchCoordinationExecutor , Logger logger ) {
343
323
final ThrottledTaskRunner throttledTaskRunner = new ThrottledTaskRunner ("field_caps" , 1 , searchCoordinationExecutor );
344
324
return r -> throttledTaskRunner .enqueueTask (new ActionListener <>() {
345
325
@ Override
@@ -362,16 +342,7 @@ public void onFailure(Exception e) {
362
342
});
363
343
}
364
344
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 ) {
375
346
var blocks = projectState .blocks ();
376
347
var projectId = projectState .projectId ();
377
348
if (blocks .global (projectId ).isEmpty () && blocks .indices (projectId ).isEmpty ()) {
@@ -421,7 +392,7 @@ private static void mergeIndexResponses(
421
392
}
422
393
}
423
394
424
- private static FieldCapabilitiesRequest prepareRemoteRequest (
395
+ public static FieldCapabilitiesRequest prepareRemoteRequest (
425
396
String clusterAlias ,
426
397
FieldCapabilitiesRequest request ,
427
398
OriginalIndices originalIndices ,
@@ -615,10 +586,10 @@ private static void innerMerge(
615
586
* This collector can contain a failure for an index even if one of its shards was successful. When building the final
616
587
* list, these failures will be skipped because they have no affect on the final response.
617
588
*/
618
- private static final class FailureCollector {
589
+ public static final class FailureCollector {
619
590
private final Map <String , Exception > failuresByIndex = new HashMap <>();
620
591
621
- List <FieldCapabilitiesFailure > build (Set <String > successfulIndices ) {
592
+ public List <FieldCapabilitiesFailure > build (Set <String > successfulIndices ) {
622
593
Map <Tuple <String , String >, FieldCapabilitiesFailure > indexFailures = new HashMap <>();
623
594
for (Map .Entry <String , Exception > failure : failuresByIndex .entrySet ()) {
624
595
String index = failure .getKey ();
@@ -647,15 +618,15 @@ List<FieldCapabilitiesFailure> build(Set<String> successfulIndices) {
647
618
return new ArrayList <>(indexFailures .values ());
648
619
}
649
620
650
- void collect (String index , Exception e ) {
621
+ public void collect (String index , Exception e ) {
651
622
failuresByIndex .putIfAbsent (index , e );
652
623
}
653
624
654
- void clear () {
625
+ public void clear () {
655
626
failuresByIndex .clear ();
656
627
}
657
628
658
- boolean isEmpty () {
629
+ public boolean isEmpty () {
659
630
return failuresByIndex .isEmpty ();
660
631
}
661
632
}
@@ -718,8 +689,8 @@ public void messageReceived(FieldCapabilitiesNodeRequest request, TransportChann
718
689
}
719
690
}
720
691
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 ) {
723
694
super (executor , forceExecution , delegate );
724
695
}
725
696
0 commit comments