diff --git a/src/server/galog/file.go b/src/server/galog/file.go index f7412225..372b2aff 100644 --- a/src/server/galog/file.go +++ b/src/server/galog/file.go @@ -156,7 +156,7 @@ func (w *fileLogWriter) doRotate() error { // return error if the last file checked still existed if err == nil { - return fmt.Errorf("rotate: cannot find free log number to rename %s", w.Filename) + //return fmt.Errorf("rotate: cannot find free log number to rename %s", w.Filename) } w.fileWriter.Close() diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index f13bd093..add674db 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -926,12 +926,24 @@ func Destroy() { log.Debug("palyer %d 断开连接 写入数据", k) return true }) - //G_GameLogicPtr.FriendMgr.SaveData() - G_GameLogicPtr.RankMgr.SaveData() - G_GameLogicPtr.ChampshipMgr.SaveData() - G_GameLogicPtr.MailMgr.SaveData() - G_GameLogicPtr.VarMgr.SaveData() - G_GameLogicPtr.MLogManager.Close() + if G_GameLogicPtr.FriendMgr != nil { + G_GameLogicPtr.FriendMgr.SaveData() + } + if G_GameLogicPtr.MessageMgr != nil { + G_GameLogicPtr.MessageMgr.SaveData() + } + if G_GameLogicPtr.VarMgr != nil { + G_GameLogicPtr.VarMgr.SaveData() + } + if G_GameLogicPtr.ChampshipMgr != nil { + G_GameLogicPtr.ChampshipMgr.SaveData() + } + if G_GameLogicPtr.MailMgr != nil { + G_GameLogicPtr.MailMgr.SaveData() + } + if G_GameLogicPtr.RankMgr != nil { + G_GameLogicPtr.RankMgr.SaveData() + } } log.Debug("服务器下线完成") } diff --git a/src/server/game/external.go b/src/server/game/external.go index 40c6271b..b3f81911 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -119,6 +119,7 @@ func HandleClientReq(args []interface{}) { G_GameLogicPtr.SendServerVersion(a) case "ReqRegisterAccount": detail := &msg.ReqRegisterAccount{} + log.Debug("player %s start login", detail.UserName) proto.Unmarshal(buf, detail) gl := G_getGameLogic() defer func() { @@ -181,16 +182,16 @@ func HandleClientReq(args []interface{}) { db.UpdateAccountInfoDeviceToDb(accountInfo) p, _ := internal.Agents.Load(a) if p != nil { + p.(*Player).lock.Lock() //加锁 + defer p.(*Player).lock.Unlock() //解锁 log.Debug("player %s login success", detail.UserName) p.(*Player).PlayMod.getBaseMod().DiviceId = detail.Device //加锁 p.(*Player).PushClientRes(ResLogin) p.(*Player).LoginBackData() p.(*Player).TeLog("Login_log", nil) + p.(*Player).ProcessTrigger() } - if newPlayer { - log.Debug("uid : %d, init user process : %s, execTime : %v , isNew: %v", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start), newPlayer) - } - p.(*Player).ProcessTrigger() + log.Debug("uid : %d, init user process : %s, execTime : %v , isNew: %v", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start), newPlayer) case "ReqServerTime": // 获取服务器时间 detail := &msg.ReqServerTime{} proto.Unmarshal(buf, detail) @@ -237,5 +238,5 @@ func HandleClientReq(args []interface{}) { if b { p.(*Player).SendClientRes() } - log.Debug("uid : %d, func : %s, execTime : %s ", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start)) + //log.Debug("uid : %d, func : %s, execTime : %s ", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start)) } diff --git a/src/server/game/message_mgr.go b/src/server/game/message_mgr.go index 98aecb1d..a1b97f47 100644 --- a/src/server/game/message_mgr.go +++ b/src/server/game/message_mgr.go @@ -286,6 +286,9 @@ func ComsumerMsgHandler(data *msg.Msg) (interface{}, error) { messages.mu.Lock() defer messages.mu.Unlock() for i, msgItem := range messages.Messages { + if msgItem == nil { + continue + } if msgItem.UniKey == data.UniKey { // 删除消息 messages.Messages = append(messages.Messages[:i], messages.Messages[i+1:]...) @@ -766,6 +769,12 @@ func FriendMgrSend(m1 *msg.Msg) error { // 异步发送消息到指定节点 节点不在线则保存消息 func sendMessageAsync(m *msg.Msg, node int) error { + defer func() { + if r := recover(); r != nil { + log.Error("message_mgr fatal : sendMessageAsync err:%s", fmt.Sprintf("fatal : %s", r)) + GoUtil.SendFeishuFatal(0, "sendMessageAsync", fmt.Sprintf("fatal : %s", r)) + } + }() log.Debug("[Middleware] Send Async message to node: %d, message: %v", node, m) err := mergeCluster.SendServerMsg(m, node) if err != nil && GoUtil.InArray(m.HandleType, save_msg_type) { @@ -778,6 +787,12 @@ func sendMessageAsync(m *msg.Msg, node int) error { // 同步消息到指定节点 节点不在线则保存消息 func sendMessageSync(m *msg.Msg, node int) (*msg.Msg, error) { + defer func() { + if r := recover(); r != nil { + log.Error("message_mgr fatal : sendMessageSync err:%s", fmt.Sprintf("fatal : %s", r)) + GoUtil.SendFeishuFatal(0, "sendMessageSync", fmt.Sprintf("fatal : %s", r)) + } + }() log.Debug("[Middleware] Send Sync message to node: %d, message: %v", node, m) msg, err := mergeCluster.CallServerMsg(m, node) if err != nil && conf.Server.ServerType == "center" && GoUtil.InArray(m.HandleType, save_msg_type) { diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index ea3bb576..01f396df 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -3022,6 +3022,7 @@ func ReqKv(player *Player, buf []byte) error { } KvMod := player.PlayMod.getKvMod() KvMod.SetVar(int(req.Key), req.Value) + log.Debug("player %d set kv key %d value %s", player.M_DwUin, req.Key, req.Value) return nil } diff --git a/src/server/game/trigger_func.go b/src/server/game/trigger_func.go index 3d271bff..c8ddee8a 100644 --- a/src/server/game/trigger_func.go +++ b/src/server/game/trigger_func.go @@ -152,7 +152,7 @@ func (player *Player) TriggerShippingOrderOrigin(req *msg.ReqShippingOrder) { "Price": OrderData.Price, "PayType": OrderData.PayType, } - player.Kafka("pay", orderDataMap) + player.TeLog("pay", orderDataMap) player.PushClientRes(&msg.ResShippingOrder{ Code: msg.RES_CODE_SUCCESS, })