From 499c3d283cc9a71e74ee3d2467364a2725227eb2 Mon Sep 17 00:00:00 2001 From: LamGC Date: Thu, 19 Aug 2021 19:14:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=AE=BE=E7=BD=AE=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=85=B3=E9=97=AD=E9=92=A9=E5=AD=90.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设置自动关闭钩子以关闭自动保存线程池. --- .../oci/compute/ssh/SshAuthIdentityProvider.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/lamgc/oracle/sentry/oci/compute/ssh/SshAuthIdentityProvider.java b/src/main/java/net/lamgc/oracle/sentry/oci/compute/ssh/SshAuthIdentityProvider.java index 5431bd5..0db9ba9 100644 --- a/src/main/java/net/lamgc/oracle/sentry/oci/compute/ssh/SshAuthIdentityProvider.java +++ b/src/main/java/net/lamgc/oracle/sentry/oci/compute/ssh/SshAuthIdentityProvider.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardOpenOption; +import java.util.Collections; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; @@ -29,7 +30,7 @@ import java.util.stream.Collectors; * @author LamGC */ @SuppressWarnings("UnstableApiUsage") -public final class SshAuthIdentityProvider { +public final class SshAuthIdentityProvider implements AutoCloseable { private final static String DEFAULT_AUTH_KEY = "@default"; private final static Logger log = LoggerFactory.getLogger(SshAuthIdentityProvider.class); @@ -71,6 +72,7 @@ public final class SshAuthIdentityProvider { log.warn("本次 SSH 认证配置保存失败.", e); } }, 60, 10, TimeUnit.SECONDS); + Runtime.getRuntime().addShutdownHook(new Thread(this::close, "Thread-ProviderAutoSave-Close")); } /** @@ -169,6 +171,10 @@ public final class SshAuthIdentityProvider { * @return 返回所有不存在对应 SSH 认证配置的实例 Id. */ private Set checkForMissingInstances() { + if (instanceManager == null) { + log.info("实例管理器未设置, 跳过检查."); + return Collections.emptySet(); + } Set instanceIdSet = instanceManager.getComputeInstances().stream() .map(ComputeInstance::getInstanceId) .collect(Collectors.toSet()); @@ -178,4 +184,8 @@ public final class SshAuthIdentityProvider { return instanceIdSet; } + @Override + public void close() { + scheduledExec.shutdown(); + } }