浏览代码

Closing services (#104726)

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Jonathan Buttner 1 年之前
父节点
当前提交
05c7377f6b

+ 6 - 14
server/src/main/java/org/elasticsearch/inference/InferenceServiceRegistry.java

@@ -9,9 +9,9 @@
 package org.elasticsearch.inference;
 
 import org.elasticsearch.client.internal.Client;
-import org.elasticsearch.common.component.AbstractLifecycleComponent;
 import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -20,7 +20,7 @@ import java.util.Optional;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-public class InferenceServiceRegistry extends AbstractLifecycleComponent {
+public class InferenceServiceRegistry implements Closeable {
 
     private final Map<String, InferenceService> services;
     private final List<NamedWriteableRegistry.Entry> namedWriteables = new ArrayList<>();
@@ -53,17 +53,9 @@ public class InferenceServiceRegistry extends AbstractLifecycleComponent {
     }
 
     @Override
-    protected void doStart() {
-
-    }
-
-    @Override
-    protected void doStop() {
-
-    }
-
-    @Override
-    protected void doClose() throws IOException {
-
+    public void close() throws IOException {
+        for (var service : services.values()) {
+            service.close();
+        }
     }
 }

+ 2 - 6
x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java

@@ -72,8 +72,6 @@ public class InferencePlugin extends Plugin implements ActionPlugin, ExtensibleP
     public static final String NAME = "inference";
     public static final String UTILITY_THREAD_POOL_NAME = "inference_utility";
     private final Settings settings;
-    // We'll keep a reference to the http manager just in case the inference services don't get closed individually
-    private final SetOnce<HttpClientManager> httpManager = new SetOnce<>();
     private final SetOnce<HttpRequestSenderFactory> httpFactory = new SetOnce<>();
     private final SetOnce<ServiceComponents> serviceComponents = new SetOnce<>();
 
@@ -120,11 +118,9 @@ public class InferencePlugin extends Plugin implements ActionPlugin, ExtensibleP
         var truncator = new Truncator(settings, services.clusterService());
         serviceComponents.set(new ServiceComponents(services.threadPool(), throttlerManager, settings, truncator));
 
-        httpManager.set(HttpClientManager.create(settings, services.threadPool(), services.clusterService(), throttlerManager));
-
         var httpRequestSenderFactory = new HttpRequestSenderFactory(
             services.threadPool(),
-            httpManager.get(),
+            HttpClientManager.create(settings, services.threadPool(), services.clusterService(), throttlerManager),
             services.clusterService(),
             settings
         );
@@ -236,6 +232,6 @@ public class InferencePlugin extends Plugin implements ActionPlugin, ExtensibleP
         var serviceComponentsRef = serviceComponents.get();
         var throttlerToClose = serviceComponentsRef != null ? serviceComponentsRef.throttlerManager() : null;
 
-        IOUtils.closeWhileHandlingException(httpManager.get(), throttlerToClose);
+        IOUtils.closeWhileHandlingException(inferenceServiceRegistry.get(), throttlerToClose);
     }
 }