diff --git a/go.mod b/go.mod index 8a91fcd2..463bfcb2 100644 --- a/go.mod +++ b/go.mod @@ -15,9 +15,9 @@ require ( github.com/go-sql-driver/mysql v1.5.0 github.com/go-yaml/yaml v2.1.0+incompatible github.com/golang/protobuf v1.5.2 - github.com/iwind/TeaGo v0.0.0-20210831140440-a2a442471b13 + github.com/iwind/TeaGo v0.0.0-20211026123858-7de7a21cad24 github.com/iwind/gosock v0.0.0-20210722083328-12b2d66abec3 - github.com/json-iterator/go v1.1.11 // indirect + github.com/json-iterator/go v1.1.12 // indirect github.com/lionsoul2014/ip2region v2.2.0-release+incompatible github.com/mozillazg/go-pinyin v0.18.0 github.com/pkg/sftp v1.12.0 diff --git a/go.sum b/go.sum index 89224e2e..661969a7 100644 --- a/go.sum +++ b/go.sum @@ -234,6 +234,8 @@ github.com/iwind/TeaGo v0.0.0-20210411134150-ddf57e240c2f/go.mod h1:KU4mS7QNiZ7Q github.com/iwind/TeaGo v0.0.0-20210628135026-38575a4ab060/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc= github.com/iwind/TeaGo v0.0.0-20210831140440-a2a442471b13 h1:HuEJ5xJfujW1Q6rNDhOu5LQXEBB2qLPah3jYslT8Gz4= github.com/iwind/TeaGo v0.0.0-20210831140440-a2a442471b13/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc= +github.com/iwind/TeaGo v0.0.0-20211026123858-7de7a21cad24 h1:1cGulkD2SNJJRok5OKwyhP/Ddm+PgSWKOupn0cR36/A= +github.com/iwind/TeaGo v0.0.0-20211026123858-7de7a21cad24/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc= github.com/iwind/gosock v0.0.0-20210722083328-12b2d66abec3 h1:aBSonas7vFcgTj9u96/bWGILGv1ZbUSTLiOzcI1ZT6c= github.com/iwind/gosock v0.0.0-20210722083328-12b2d66abec3/go.mod h1:H5Q7SXwbx3a97ecJkaS2sD77gspzE7HFUafBO0peEyA= github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= @@ -250,6 +252,8 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -320,6 +324,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mozillazg/go-pinyin v0.18.0 h1:hQompXO23/0ohH8YNjvfsAITnCQImCiR/Fny8EhIeW0= github.com/mozillazg/go-pinyin v0.18.0/go.mod h1:iR4EnMMRXkfpFVV5FMi4FNB6wGq9NV6uDWbUuPhP4Yc= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index f6699abd..54d78fc1 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -41,6 +41,8 @@ type APINode struct { serviceInstanceLocker sync.Mutex sock *gosock.Sock + + isStarting bool } func NewAPINode() *APINode { @@ -51,6 +53,8 @@ func NewAPINode() *APINode { } func (this *APINode) Start() { + this.isStarting = true + logs.Println("[API_NODE]start api node, pid: " + strconv.Itoa(os.Getpid())) // 检查数据库连接 @@ -61,6 +65,7 @@ func (this *APINode) Start() { } // 本地Sock + logs.Println("[API_NODE]listening sock ...") err = this.listenSock() if err != nil { logs.Println("[API_NODE]" + err.Error()) @@ -68,6 +73,7 @@ func (this *APINode) Start() { } // 自动升级 + logs.Println("[API_NODE]auto upgrading ...") err = this.autoUpgrade() if err != nil { logs.Println("[API_NODE]auto upgrade failed: " + err.Error()) @@ -75,6 +81,7 @@ func (this *APINode) Start() { } // 自动设置数据库 + logs.Println("[API_NODE]setup database ...") err = this.setupDB() if err != nil { logs.Println("[API_NODE]setup database '" + err.Error() + "'") @@ -83,9 +90,11 @@ func (this *APINode) Start() { } // 数据库通知启动 + logs.Println("[API_NODE]notify ready ...") dbs.NotifyReady() // 读取配置 + logs.Println("[API_NODE]reading api config ...") config, err := configs.SharedAPIConfig() if err != nil { logs.Println("[API_NODE]start failed: " + err.Error()) @@ -124,6 +133,9 @@ func (this *APINode) Start() { return } + // 结束启动 + this.isStarting = false + // 保持进程 select {} } @@ -515,6 +527,13 @@ func (this *APINode) listenSock() error { // 退出主进程 events.Notify(events.EventQuit) os.Exit(0) + case "starting": // 是否正在启动 + _ = cmd.Reply(&gosock.Command{ + Code: "starting", + Params: map[string]interface{}{ + "isStarting": this.isStarting, + }, + }) } })