From 6f22b30c7f37a4db5f26f69b8f13f6023725c296 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Wed, 31 May 2023 10:15:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20keep-alive-time=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mc/plugin/core/bukkit/api/CoreBukkitAPI.java | 3 +++ .../mc/plugin/core/bukkit/command/ParentCommand.java | 6 ++++++ hamster-core-bukkit/src/main/resources/config.yml | 9 +++++++-- .../mc/plugin/core/bungee/api/CoreBungeeAPI.java | 3 +++ hamster-core-bungeecord/src/main/resources/config.yml | 7 ++++++- 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/api/CoreBukkitAPI.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/api/CoreBukkitAPI.java index df84997..21b6e67 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/api/CoreBukkitAPI.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/api/CoreBukkitAPI.java @@ -20,6 +20,7 @@ public final class CoreBukkitAPI extends CoreAPI { if (datasourceConfig == null) { throw new IllegalArgumentException("配置文件中未找到 datasource 节点!"); } + HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName(datasourceConfig.getString("driver")); hikariConfig.setJdbcUrl(datasourceConfig.getString("url")); @@ -27,10 +28,12 @@ public final class CoreBukkitAPI extends CoreAPI { hikariConfig.setPassword(datasourceConfig.getString("password")); hikariConfig.setMaximumPoolSize(datasourceConfig.getInt("maximum-pool-size", 3)); hikariConfig.setMinimumIdle(datasourceConfig.getInt("minimum-idle", 1)); + hikariConfig.setKeepaliveTime(datasourceConfig.getLong("keep-alive-time", 5 * 1000)); hikariConfig.setIdleTimeout(datasourceConfig.getLong("idle-timeout", 10 * 60 * 1000)); hikariConfig.setMaxLifetime(datasourceConfig.getLong("max-lifetime", 30 * 60 * 1000)); hikariConfig.setValidationTimeout(datasourceConfig.getLong("validation-timeout", 5000)); hikariConfig.setPoolName("HamsterCore-Pool"); + datasource = new HikariDataSource(hikariConfig); } diff --git a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java index d90675f..1dcb799 100644 --- a/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java +++ b/hamster-core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/command/ParentCommand.java @@ -153,6 +153,12 @@ public abstract class ParentCommand extends ChildCommand { @Override public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) { + if (args.length == 0) { + return childCommands.stream() + .filter(o -> o.hasPermission(sender)) + .map(ChildCommand::getName) + .collect(Collectors.toList()); + } for (ChildCommand child : childCommands) { if (args[0].equalsIgnoreCase(child.getName())) { return child.onTabComplete(sender, command, alias, Arrays.copyOfRange(args, 1, args.length)); diff --git a/hamster-core-bukkit/src/main/resources/config.yml b/hamster-core-bukkit/src/main/resources/config.yml index 16c4e77..4da8b9b 100644 --- a/hamster-core-bukkit/src/main/resources/config.yml +++ b/hamster-core-bukkit/src/main/resources/config.yml @@ -18,8 +18,13 @@ datasource: # 推荐值:1~3 minimum-idle: 0 # 最大链接数 - # 推荐值:不低于5 - maximum-pool-size: 10 + # 推荐值:不低于3 + maximum-pool-size: 3 + # 保持连接池可用的间隔 + # 除非你的服务器数据库连接经常断开,否则不建议启用该选项 + # 单位:毫秒 + # 默认值为0(禁用) + keep-alive-time: 0 # 连接闲置回收时间 # 单位:毫秒 # 推荐值:600000(10分钟) diff --git a/hamster-core-bungeecord/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/CoreBungeeAPI.java b/hamster-core-bungeecord/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/CoreBungeeAPI.java index e93147c..a4493c8 100644 --- a/hamster-core-bungeecord/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/CoreBungeeAPI.java +++ b/hamster-core-bungeecord/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/CoreBungeeAPI.java @@ -21,6 +21,7 @@ public final class CoreBungeeAPI extends CoreAPI { if (datasourceConfig == null) { throw new IllegalArgumentException("配置文件中未找到 datasource 节点!"); } + HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName(datasourceConfig.getString("driver")); hikariConfig.setJdbcUrl(datasourceConfig.getString("url")); @@ -28,10 +29,12 @@ public final class CoreBungeeAPI extends CoreAPI { hikariConfig.setPassword(datasourceConfig.getString("password")); hikariConfig.setMaximumPoolSize(datasourceConfig.getInt("maximum-pool-size", 3)); hikariConfig.setMinimumIdle(datasourceConfig.getInt("minimum-idle", 1)); + hikariConfig.setKeepaliveTime(datasourceConfig.getLong("keep-alive-time", 5 * 1000)); hikariConfig.setIdleTimeout(datasourceConfig.getLong("idle-timeout", 10 * 60 * 1000)); hikariConfig.setMaxLifetime(datasourceConfig.getLong("max-lifetime", 30 * 60 * 1000)); hikariConfig.setValidationTimeout(datasourceConfig.getLong("validation-timeout", 5000)); hikariConfig.setPoolName("HamsterCore-Pool"); + datasource = new HikariDataSource(hikariConfig); } diff --git a/hamster-core-bungeecord/src/main/resources/config.yml b/hamster-core-bungeecord/src/main/resources/config.yml index 1ad2a75..b813f87 100644 --- a/hamster-core-bungeecord/src/main/resources/config.yml +++ b/hamster-core-bungeecord/src/main/resources/config.yml @@ -15,7 +15,12 @@ datasource: minimum-idle: 0 # 最大链接数 # 推荐值:不低于5 - maximum-pool-size: 10 + maximum-pool-size: 5 + # 保持连接池可用的间隔 + # 除非你的服务器数据库连接经常断开,否则不建议启用该选项 + # 单位:毫秒 + # 默认值为0(禁用) + keep-alive-time: 0 # 连接闲置回收时间 # 单位:毫秒 # 推荐值:600000(10分钟)