数据漏存和日志

zhangshanxue 2020-06-21 02:21:40 +08:00
parent f934ae4c12
commit cd046d2d43
5 changed files with 43 additions and 29 deletions

View File

@ -69,6 +69,7 @@ public class LjsdMongoTemplate {
coll.update(searchQuery, dbObject); coll.update(searchQuery, dbObject);
} }
//非用户线程记得更新玩家数据
public void lastUpdate() throws Exception { public void lastUpdate() throws Exception {
MongoUpdateCacheThreadLocal.update(this); MongoUpdateCacheThreadLocal.update(this);
} }

View File

@ -112,11 +112,16 @@ public class HandlerLogicThread extends Thread{
public void doWork(){ public void doWork(){
try { try {
AyyncWorker ayyncWorker =null; AyyncWorker ayyncWorker =null;
boolean hasAsyncWorker =false;
while ( (ayyncWorker = ayyncWorkerConcurrentLinkedQueue.poll())!=null){ while ( (ayyncWorker = ayyncWorkerConcurrentLinkedQueue.poll())!=null){
hasAsyncWorker=true;
ayyncWorker.work(ayyncWorker.getUser()); ayyncWorker.work(ayyncWorker.getUser());
} }
PacketNetData packetNetData = handlerLinkedQueue.poll(); PacketNetData packetNetData = handlerLinkedQueue.poll();
if(packetNetData == null){ if(packetNetData == null){
if(hasAsyncWorker){
MongoUtil.getInstence().lastUpdate();
}
Thread.sleep(2); Thread.sleep(2);
return; return;
} }

View File

@ -219,8 +219,8 @@ public class MongoUtil {
} else { } else {
if (value instanceof JsonObject && o2.get(key) instanceof JsonObject) { if (value instanceof JsonObject && o2.get(key) instanceof JsonObject) {
if (!equill((JsonObject) value, (JsonObject) o2.get(key), builder, builder2)) { if (!equill((JsonObject) value, (JsonObject) o2.get(key), builder, builder2)) {
// builder.append("type111111:o1 = [" + o1 + "]\r\n"); builder.append("type111111:o1 = [" + o1 + "]\r\n");
// builder2.append( "type111111:o2 = [" + o2 + "]\r\n"); builder2.append( "type111111:o2 = [" + o2 + "]\r\n");
is = false; is = false;
} }
} else { } else {

View File

@ -339,7 +339,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
public void setOpenState(User user,int openState){ public void setOpenState(User user,int openState){
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if(activityMission != null){ if(activityMission != null){
activityMission.setActivityState(openState); activityMission.setOpenType(openState);
Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(user.getId(),id,openState)); Poster.getPoster().dispatchEvent(new ActivityStateChangeEvent(user.getId(),id,openState));
} }

View File

@ -145,36 +145,44 @@ public class MinuteTask extends Thread {
int minute = calendar.get(Calendar.MINUTE); int minute = calendar.get(Calendar.MINUTE);
if(hour == 5 && minute ==0){ if(hour == 5 && minute ==0){
Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap; //保证每分钟线程
for(Map.Entry<Integer,GuildInfo> guildInfoEntry:guildInfoMap.entrySet()){ try {
RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.GUILD_RED_PACKAGE_RANK,String.valueOf(guildInfoEntry.getKey()),false)); Map<Integer, GuildInfo> guildInfoMap = GuilidManager.guildInfoMap;
guildInfoEntry.getValue().reSetFete(); for(Map.Entry<Integer,GuildInfo> guildInfoEntry:guildInfoMap.entrySet()){
RedisUtil.getInstence().del(RedisKey.getKey(RedisKey.GUILD_RED_PACKAGE_RANK,String.valueOf(guildInfoEntry.getKey()),false));
guildInfoEntry.getValue().reSetFete();
SimpleTransaction transaction = SimpleTransaction.current(); SimpleTransaction transaction = SimpleTransaction.current();
GuildInfo guildInfo = guildInfoEntry.getValue(); GuildInfo guildInfo = guildInfoEntry.getValue();
Set<Integer> sendUids = new HashSet<>(); Set<Integer> sendUids = new HashSet<>();
for (Set<Integer> items : guildInfo.getMembers().values()) { for (Set<Integer> items : guildInfo.getMembers().values()) {
sendUids.addAll(items); sendUids.addAll(items);
}
Lockeys.getLockeys().lock("guild",sendUids);
guildInfo.clearGuildHelpLog();
//统一清除
for (Integer sendUid : sendUids) {
User target = UserManager.getUser(sendUid);
GuildLogic.sendGuildHelpRewardEmail(target);
GuildMyInfo guildMyInfo = target.getGuildMyInfo();
guildMyInfo.setGuidHelpInfo(new HashMap<>());
guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>());
guildMyInfo.setGuildHelpSendTime(0);
guildMyInfo.setGuildHelpReward(false);
guildMyInfo.setGuildHelpTime(0);
}
SimpleTransaction.remove();
//处理公会援助信息
//入库
MongoUtil.getInstence().lastUpdate();
} }
Lockeys.getLockeys().lock("guild",sendUids); }catch (Exception e){
guildInfo.clearGuildHelpLog(); LOGGER.error("Exception everyFiveTask" );
//统一清除
for (Integer sendUid : sendUids) {
User target = UserManager.getUser(sendUid);
GuildLogic.sendGuildHelpRewardEmail(target);
GuildMyInfo guildMyInfo = target.getGuildMyInfo();
guildMyInfo.setGuidHelpInfo(new HashMap<>());
guildMyInfo.setGuidHelpHadTakeInfo(new HashMap<>());
guildMyInfo.setGuildHelpSendTime(0);
guildMyInfo.setGuildHelpReward(false);
guildMyInfo.setGuildHelpTime(0);
}
SimpleTransaction.remove();
//处理公会援助信息
} }
LOGGER.info("DailyOfFiveTask start ..."); LOGGER.info("DailyOfFiveTask start ...");
GlobalDataManaager.everTask(5); GlobalDataManaager.everTask(5);
LOGGER.info("DailyOfFiveTask end ..."); LOGGER.info("DailyOfFiveTask end ...");