back_recharge
zhangshanxue 2020-08-17 22:31:25 +08:00
parent 90e14e4493
commit 024e339bc3
1 changed files with 16 additions and 3 deletions

View File

@ -171,9 +171,14 @@ public class AreaManager {
if (System.currentTimeMillis() > execDate) { if (System.currentTimeMillis() > execDate) {
serverArenaInfoManagerCache = serverArenaInfoManager; serverArenaInfoManagerCache = serverArenaInfoManager;
int tmpAreaId = areaId; 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) { 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 { try {
new Thread("sever_area_change") { new Thread("sever_area_change") {
@Override @Override
@ -183,6 +188,8 @@ public class AreaManager {
serverStateReset(); serverStateReset();
}catch (Exception e) { }catch (Exception e) {
LOGGER.error(" serverArenaInfoManager get 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) { } catch (Exception e) {
LOGGER.error(" serverArenaInfoManager get exception", e); LOGGER.error(" serverArenaInfoManager get exception", e);
} finally { } 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); 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<Integer, GuildInfo> entry:guildInfoMap.entrySet()) { for(Map.Entry<Integer, GuildInfo> entry:guildInfoMap.entrySet()) {
String newKey = RedisKey.getKey(RedisKey.C_Family_Name_Key, entry.getValue().getName(), true); 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); Object extFamilyId = RedisUtil.getInstence().get(newKey);
String tempName = newKey; String tempName = newKey;