|  | @@ -78,7 +78,7 @@ public class DeploymentManager {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void startDeployment(TrainedModelDeploymentTask task) {
 | 
	
		
			
				|  |  | -        executorServiceForDeployment.execute(() -> doStartDeployment(task));
 | 
	
		
			
				|  |  | +        doStartDeployment(task);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private void doStartDeployment(TrainedModelDeploymentTask task) {
 | 
	
	
		
			
				|  | @@ -118,7 +118,10 @@ public class DeploymentManager {
 | 
	
		
			
				|  |  |                  NlpTask nlpTask = NlpTask.fromConfig(config);
 | 
	
		
			
				|  |  |                  NlpTask.Processor processor = nlpTask.createProcessor();
 | 
	
		
			
				|  |  |                  processContext.nlpTaskProcessor.set(processor);
 | 
	
		
			
				|  |  | -                startAndLoad(task, processContext, modelLoadedListener);
 | 
	
		
			
				|  |  | +                // here, we are being called back on the searching thread, which MAY be a network thread
 | 
	
		
			
				|  |  | +                // `startAndLoad` creates named pipes, blocking the calling thread, better to execute that in our utility
 | 
	
		
			
				|  |  | +                // executor.
 | 
	
		
			
				|  |  | +                executorServiceForDeployment.execute(() -> startAndLoad(task, processContext, modelLoadedListener));
 | 
	
		
			
				|  |  |              },
 | 
	
		
			
				|  |  |              e -> failTask(task,
 | 
	
		
			
				|  |  |                  String.format(Locale.ROOT, "[%s] creating NLP task from configuration failed with error [%s]", task.getModelId(), e))
 |