diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/AreaManager.java b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/AreaManager.java index 9724f8a00..c10debee6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/AreaManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/mongo/AreaManager.java @@ -171,9 +171,14 @@ public class AreaManager { if (System.currentTimeMillis() > execDate) { serverArenaInfoManagerCache = serverArenaInfoManager; int tmpAreaId = areaId; - boolean isSuccess = RedisUtil.getInstence().tryGetDistributedLock(RedisKey.ServerArenaJob, "", Integer.toString(newAreaId), 500); + boolean isSuccess = RedisUtil.getInstence().tryGetDistributedLock(RedisKey.ServerArenaJob, "", Integer.toString(newAreaId), 15000); + int i=0; + while (i<1000&&!isSuccess){ + i++; + isSuccess= RedisUtil.getInstence().tryGetDistributedLock(RedisKey.ServerArenaJob, "", Integer.toString(newAreaId), 15000); + } if (isSuccess) { - LOGGER.info(" serverArenaInfoManager get redis lock,the serverid={},the oldArea={},the newArea={}", GameApplication.serverId, areaId, newAreaId); + LOGGER.info(" serverArenaInfoManager get redis lock,the serverid={},the oldArea={},the newArea={},getlockTime{}", GameApplication.serverId, areaId, newAreaId,i); try { new Thread("sever_area_change") { @Override @@ -183,6 +188,8 @@ public class AreaManager { serverStateReset(); }catch (Exception e) { LOGGER.error(" serverArenaInfoManager get exception", e); + }finally { + RedisUtil.getInstence().releaseDistributedLock(RedisKey.ServerArenaJob,"", Integer.toString(newAreaId)); } } @@ -190,7 +197,7 @@ public class AreaManager { } catch (Exception e) { LOGGER.error(" serverArenaInfoManager get exception", e); } finally { - RedisUtil.getInstence().releaseDistributedLock(RedisKey.ServerArenaJob,"", Integer.toString(newAreaId)); + } } LOGGER.info(" serverArenaInfoManager not get redis lock,the serverid={},the oldArea={},the newArea={}", GameApplication.serverId, areaId, newAreaId); @@ -343,6 +350,12 @@ public class AreaManager { for(Map.Entry entry:guildInfoMap.entrySet()) { String newKey = RedisKey.getKey(RedisKey.C_Family_Name_Key, entry.getValue().getName(), true); + + if(newKey.startsWith(String.valueOf(areaId))){ + int length =newKey.length(); + newKey = newAreaId+newKey.substring(String.valueOf(areaId).length(),length); + } + Object extFamilyId = RedisUtil.getInstence().get(newKey); String tempName = newKey;