2121import org .elasticsearch .test .ESTestCase ;
2222import org .elasticsearch .threadpool .FixedExecutorBuilder ;
2323import org .elasticsearch .threadpool .TestThreadPool ;
24+ import org .elasticsearch .threadpool .ThreadPool ;
2425import org .elasticsearch .xpack .core .inference .action .GetInferenceModelAction ;
2526import org .elasticsearch .xpack .esql .parser .EsqlParser ;
26- import org .elasticsearch .xpack .esql .plugin .EsqlPlugin ;
2727import org .junit .After ;
2828import org .junit .Before ;
2929
@@ -51,7 +51,7 @@ public void setThreadPool() {
5151 getTestClass ().getSimpleName (),
5252 new FixedExecutorBuilder (
5353 Settings .EMPTY ,
54- EsqlPlugin . ESQL_WORKER_THREAD_POOL_NAME ,
54+ "inference_utility" ,
5555 between (1 , 10 ),
5656 1024 ,
5757 "esql" ,
@@ -101,9 +101,12 @@ public void testResolveInferenceIds() throws Exception {
101101 List <String > inferenceIds = List .of ("rerank-plan" );
102102 SetOnce <InferenceResolution > inferenceResolutionSetOnce = new SetOnce <>();
103103
104- inferenceResolver .resolveInferenceIds (inferenceIds , ActionListener .wrap (inferenceResolutionSetOnce ::set , e -> {
105- throw new RuntimeException (e );
106- }));
104+ inferenceResolver .resolveInferenceIds (
105+ inferenceIds ,
106+ assertAnswerUsingThreadPool (ActionListener .wrap (inferenceResolutionSetOnce ::set , e -> {
107+ throw new RuntimeException (e );
108+ }))
109+ );
107110
108111 assertBusy (() -> {
109112 InferenceResolution inferenceResolution = inferenceResolutionSetOnce .get ();
@@ -118,9 +121,12 @@ public void testResolveMultipleInferenceIds() throws Exception {
118121 List <String > inferenceIds = List .of ("rerank-plan" , "rerank-plan" , "completion-plan" );
119122 SetOnce <InferenceResolution > inferenceResolutionSetOnce = new SetOnce <>();
120123
121- inferenceResolver .resolveInferenceIds (inferenceIds , ActionListener .wrap (inferenceResolutionSetOnce ::set , e -> {
122- throw new RuntimeException (e );
123- }));
124+ inferenceResolver .resolveInferenceIds (
125+ inferenceIds ,
126+ assertAnswerUsingThreadPool (ActionListener .wrap (inferenceResolutionSetOnce ::set , e -> {
127+ throw new RuntimeException (e );
128+ }))
129+ );
124130
125131 assertBusy (() -> {
126132 InferenceResolution inferenceResolution = inferenceResolutionSetOnce .get ();
@@ -143,9 +149,12 @@ public void testResolveMissingInferenceIds() throws Exception {
143149
144150 SetOnce <InferenceResolution > inferenceResolutionSetOnce = new SetOnce <>();
145151
146- inferenceResolver .resolveInferenceIds (inferenceIds , ActionListener .wrap (inferenceResolutionSetOnce ::set , e -> {
147- throw new RuntimeException (e );
148- }));
152+ inferenceResolver .resolveInferenceIds (
153+ inferenceIds ,
154+ assertAnswerUsingThreadPool (ActionListener .wrap (inferenceResolutionSetOnce ::set , e -> {
155+ throw new RuntimeException (e );
156+ }))
157+ );
149158
150159 assertBusy (() -> {
151160 InferenceResolution inferenceResolution = inferenceResolutionSetOnce .get ();
@@ -173,21 +182,17 @@ private Client mockClient() {
173182 }
174183 };
175184
176- if (randomBoolean ()) {
177- sendResponse .run ();
178- } else {
179- threadPool .schedule (
180- sendResponse ,
181- TimeValue .timeValueNanos (between (1 , 1_000 )),
182- threadPool .executor (EsqlPlugin .ESQL_WORKER_THREAD_POOL_NAME )
183- );
184- }
185+ threadPool .schedule (sendResponse , TimeValue .timeValueNanos (between (1 , 1_000 )), threadPool .executor ("inference_utility" ));
185186
186187 return null ;
187188 }).when (client ).execute (eq (GetInferenceModelAction .INSTANCE ), any (), any ());
188189 return client ;
189190 }
190191
192+ private <T > ActionListener <T > assertAnswerUsingThreadPool (ActionListener <T > actionListener ) {
193+ return ActionListener .runBefore (actionListener , () -> ThreadPool .assertCurrentThreadPool (ThreadPool .Names .SEARCH_COORDINATION ));
194+ }
195+
191196 private static ActionResponse getInferenceModelResponse (GetInferenceModelAction .Request request ) {
192197 GetInferenceModelAction .Response response = mock (GetInferenceModelAction .Response .class );
193198
@@ -205,7 +210,7 @@ private static ActionResponse getInferenceModelResponse(GetInferenceModelAction.
205210 }
206211
207212 private InferenceResolver inferenceResolver () {
208- return new InferenceResolver (mockClient ());
213+ return new InferenceResolver (mockClient (), threadPool );
209214 }
210215
211216 private static ModelConfigurations mockModelConfig (String inferenceId , TaskType taskType ) {
0 commit comments