From cb907ae642b56b148eeeb078d40944c6145e0b05 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 14 Aug 2024 09:25:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- etcd/register.go | 1 + worldsrv/etcd.go | 60 +++++++++++++++++++++++------------------------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/etcd/register.go b/etcd/register.go index 9041ece..dc22dc2 100644 --- a/etcd/register.go +++ b/etcd/register.go @@ -18,6 +18,7 @@ import ( // key:监听的key // msgType:数据类型 // f:数据变更回调方法, completeKey:完整键, isInit:第一次主动拉取数据,event:事件类型, data:已经反序列化的数据,类型为msgType,是指针类型 +// **isInit** 为true时,表示是第一次主动拉取数据,此时允许耗时操作。为false时,表示是监听到数据变更,此时不允许耗时操作。 func Register(key string, msgType interface{}, f func(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{})) { createFunc := func() interface{} { tp := reflect.TypeOf(msgType) diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 5817a68..8ec882e 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -5,7 +5,6 @@ import ( "encoding/json" "strconv" "strings" - "time" "go.etcd.io/etcd/client/v3" "mongo.games.com/goserver/core/basic" @@ -247,36 +246,40 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e PlatformMgrSingleton.GetConfig(config.Platform).PermitStartTs = startTs PlatformMgrSingleton.GetConfig(config.Platform).PermitEndTs = endTs } - f := func() { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - if st.StartTs <= 0 || st.EndTs <= 0 { - return nil - } - b, err := json.Marshal(st) + f1 := func() { + if st.StartTs <= 0 || st.EndTs <= 0 { + return + } + b, err := json.Marshal(st) + if err != nil { + logger.Logger.Errorf("permit startts save error: %v", err) + } else { + logger.Logger.Infof("update permit startts: %v %v", st.StartTs, st.EndTs) + err := model.UptStrKVGameData(common.PermitStartTsKey+config.Platform, string(b)) if err != nil { - logger.Logger.Errorf("permit startts save error: %v", err) - } else { - logger.Logger.Infof("update permit startts: %v %v", st.StartTs, st.EndTs) - err := model.UptStrKVGameData(common.PermitStartTsKey+config.Platform, string(b)) - if err != nil { - logger.Logger.Errorf("permit startts update error:%v", err) - } + logger.Logger.Errorf("permit startts update error:%v", err) } - return nil - }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { - if st.StartTs > 0 { - LogChannelSingleton.WriteLog(&model.BackendPermitCycle{ - Platform: config.Platform, - StartTs: st.StartTs, - EndTs: st.EndTs - 1, - }) - } - })).StartByExecutor("permit_start_ts") + } + } + f2 := func() { + if st.StartTs > 0 { + LogChannelSingleton.WriteLog(&model.BackendPermitCycle{ + Platform: config.Platform, + StartTs: st.StartTs, + EndTs: st.EndTs - 1, + }) + } } if isInit { - time.AfterFunc(time.Second*5, f) //todo 优化 + f1() + f2() } else { - f() + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + f1() + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + f2() + })).StartByExecutor("permit_start_ts") } case *webapi.ItemConfig: @@ -328,11 +331,6 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } - PlatformMgrSingleton.GetConfig("1").GuideConfig = &webapi.GuideConfig{ - Platform: "1", - On: common.On, - Skip: common.On, - } } func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {