From e9d1565115f29ba6a17867849102daedffcb827d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 10:19:05 +0800 Subject: [PATCH 01/10] =?UTF-8?q?bug=E6=BC=8F=E6=B4=9E=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=9B1.processtrigger=20=E6=BC=8F=E5=8A=A0=E9=94=81?= =?UTF-8?q?=EF=BC=9B2message=5Fmgr=E7=A9=BA=E6=8C=87=E9=92=88=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/external.go | 4 +++- src/server/game/message_mgr.go | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/server/game/external.go b/src/server/game/external.go index 40c6271b..9039a031 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -181,16 +181,18 @@ 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() case "ReqServerTime": // 获取服务器时间 detail := &msg.ReqServerTime{} proto.Unmarshal(buf, detail) 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) { From ecf37639a532b255a3bfdcc74f40915b59463c33 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 11:46:40 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/galog/file.go | 2 +- src/server/game/GameLogic.go | 24 ++++++++++++++++++------ src/server/game/external.go | 3 ++- 3 files changed, 21 insertions(+), 8 deletions(-) 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 ba5d0e72..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 9039a031..93a2bba7 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -60,7 +60,7 @@ func HandleClientReq(args []interface{}) { // 消息的发送者 a := args[1].(gate.Agent) buf := m.GetInfo() - // log.Debug("消息Func : %s", m.GetFunc()) + log.Debug("消息Func : %s", m.GetFunc()) switch m.GetFunc() { case "ClientTick": case "ReqChangePassword": @@ -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() { From 69e4c823c4cc5cb68de83f3c8324c70c2e32bf63 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 11:47:41 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/player_data.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index 5a971a0e..cba042ac 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -272,7 +272,7 @@ func (p *Player) OrderShip() { // 避免为每个订单创建 goroutine,改为批量处理或同步处理 for _, OrderInfo := range OrderList { // 直接同步处理,避免创建过多 goroutine - p.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ + go p.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ OrderSn: OrderInfo.OrderId, }) } From 8aac8e31d0870d90acbab2038aec8e8a492d913c Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 11:47:41 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/player_data.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index 5a971a0e..cba042ac 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -272,7 +272,7 @@ func (p *Player) OrderShip() { // 避免为每个订单创建 goroutine,改为批量处理或同步处理 for _, OrderInfo := range OrderList { // 直接同步处理,避免创建过多 goroutine - p.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ + go p.TriggerShippingOrderOrigin(&msg.ReqShippingOrder{ OrderSn: OrderInfo.OrderId, }) } From 22c20dd8b34e24036b1535451d235c9638e5658d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 12:23:13 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/register_network_func.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index 86680236..5cf44f86 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -3021,6 +3021,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 } From 3e11991b02d26990e3388d2cbe5d77ad93b1a90a Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 12:23:13 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/register_network_func.go | 1 + 1 file changed, 1 insertion(+) 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 } From 746ad76a5b2667e152c1673f3d6259ebc9124717 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:56:47 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/trigger_func.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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, }) From d60c56a767ae8878e554acf1711239d4aeddc87e Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 17:35:15 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/external.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/external.go b/src/server/game/external.go index 93a2bba7..0e5d54d7 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -60,7 +60,7 @@ func HandleClientReq(args []interface{}) { // 消息的发送者 a := args[1].(gate.Agent) buf := m.GetInfo() - log.Debug("消息Func : %s", m.GetFunc()) + // log.Debug("消息Func : %s", m.GetFunc()) switch m.GetFunc() { case "ClientTick": case "ReqChangePassword": From 39575b61d509e2e16613078ea79963ef3f786bd8 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 18:20:39 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/external.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/external.go b/src/server/game/external.go index 0e5d54d7..2fdc19f4 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -240,5 +240,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)) } From 27c7d38fbaa69c2dc7091bcf6c9ebc2f25e1683f Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 18:21:38 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/external.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/server/game/external.go b/src/server/game/external.go index 2fdc19f4..b3f81911 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -191,9 +191,7 @@ func HandleClientReq(args []interface{}) { 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) - } + 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)