From 33759072fab9e6d4d8dc1e14f5f05380fe2cbc7f Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Fri, 26 Apr 2024 14:04:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E6=9C=8D=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/script/deluser.sh | 3 ++- src/main/java/com/jmfy/handler/HeFuManager.java | 15 +++++++++------ .../java/com/jmfy/utils/AutoServerManager.java | 6 +++++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/conf/script/deluser.sh b/conf/script/deluser.sh index 8eeb99c..ec57abf 100644 --- a/conf/script/deluser.sh +++ b/conf/script/deluser.sh @@ -7,6 +7,7 @@ proccessname=$3 # 进程名称 mongourl=$4 # MongoDB地址 redisIp=$5 # Redis IP redisPwd=$6 # Redis 密码 +mongoadmin=%7 # mongo后缀 # 停止游戏进程 ansible "$gameip" -m shell -a "supervisorctl stop $proccessname" @@ -18,7 +19,7 @@ fi # 清除MongoDB数据 tempFile="/data/jieling/gm/config/script/clearMongo.js" -mongo "mongodb://${mongourl}/jieling_${serverid}?authSource=admin" "$tempFile" +mongo "mongodb://${mongourl}/jieling_${serverid}?${mongoadmin}" "$tempFile" if [ $? -ne 0 ]; then echo "清除MongoDB数据失败,退出脚本。" exit 1 diff --git a/src/main/java/com/jmfy/handler/HeFuManager.java b/src/main/java/com/jmfy/handler/HeFuManager.java index f0d6a84..1f86bd6 100644 --- a/src/main/java/com/jmfy/handler/HeFuManager.java +++ b/src/main/java/com/jmfy/handler/HeFuManager.java @@ -101,8 +101,8 @@ public class HeFuManager { dealIpPort(masterId, salveList); // 合服记录入库 addHeFuInfo(masterId, salveList); - // 重启服务器 - AutoServerManager.rebootServer(String.valueOf(masterId)); + // 不用重启服务器 +// AutoServerManager.rebootServer(String.valueOf(masterId)); // 更新合服缓存 setHefuMap(); }catch (Exception e){ @@ -131,6 +131,7 @@ public class HeFuManager { // 预防二次合服,删除之前得合服记录 CHefuInfo hefu = hefuDao.findHefuByServerID(masterId); if (hefu != null){ + cloneSet.addAll(hefu.getSlaveServerIds()); hefuDao.removeHefuInfo(hefu); } for (Integer id : salveList) { @@ -243,20 +244,22 @@ public class HeFuManager { * @throws Exception 异常 */ private static void dealIpPort(int masterSID, Set slaveId) throws Exception { + ServerInfo masterServer = serverInfoDao.getServerInfo(String.valueOf(masterSID)); for (Integer slave : slaveId) { CHefuInfo hefuInfo = hefuDao.findHefuByServerID(slave); if (hefuInfo != null){ + // 旧主服也需要改ip端口 + upsertServerIpAndPort(masterServer, hefuInfo.getMasterServerId()); for (Integer serverId : hefuInfo.getSlaveServerIds()) { - upsertServerIpAndPort(masterSID, serverId); + upsertServerIpAndPort(masterServer, serverId); } }else { - upsertServerIpAndPort(masterSID, slave); + upsertServerIpAndPort(masterServer, slave); } } } - public static void upsertServerIpAndPort(int masterSID, int slaveSID) throws Exception { - ServerInfo masterServer = serverInfoDao.getServerInfo(String.valueOf(masterSID)); + public static void upsertServerIpAndPort(ServerInfo masterServer, int slaveSID) throws Exception { ServerInfo slaveServer = serverInfoDao.getServerInfo(String.valueOf(slaveSID)); slaveServer.setIp(masterServer.getIp()); slaveServer.setPort(masterServer.getPort()); diff --git a/src/main/java/com/jmfy/utils/AutoServerManager.java b/src/main/java/com/jmfy/utils/AutoServerManager.java index 465c417..9ef0dbe 100644 --- a/src/main/java/com/jmfy/utils/AutoServerManager.java +++ b/src/main/java/com/jmfy/utils/AutoServerManager.java @@ -40,6 +40,10 @@ public class AutoServerManager { String[] split = gameMongodb.split("/"); return split[2]; } + public static String getGameMongoAdmin() { + String[] split = gameMongodb.split("\\?"); + return split[1]; + } @Value("${spring.data.gameMongodb.uri}") public void setGameMongodb(String gameMongodb) { AutoServerManager.gameMongodb = gameMongodb; @@ -326,7 +330,7 @@ public class AutoServerManager { String space = " "; String command = "bash" + space + path + space + serverInfo.getIp() + space + serverInfo.getServer_id() + space + serverInfo.getCoreName() - + space + getGameMongodb() + space + getRedisHost() + space + getRedisPwd(); + + space + getGameMongodb() + space + getRedisHost() + space + getRedisPwd() + space + getGameMongoAdmin(); LOGGER.info("清库命令:{}", command); Process exec = null;