From 545aa771bfead3e38e3c91f0be9b305c888f3c94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Wed, 1 Dec 2021 15:51:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E9=85=8D=E7=BD=AE=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E6=97=B6=E8=BF=94=E5=9B=9E=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/nodeconfigs/node_config.go | 42 +++++++++++++++++++------------- pkg/nodeconfigs/node_log_type.go | 3 ++- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/pkg/nodeconfigs/node_config.go b/pkg/nodeconfigs/node_config.go index 30ec8be..7f939d8 100644 --- a/pkg/nodeconfigs/node_config.go +++ b/pkg/nodeconfigs/node_config.go @@ -7,7 +7,6 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/iwind/TeaGo/Tea" - "github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/maps" "io/ioutil" "strconv" @@ -15,6 +14,15 @@ import ( var sharedNodeConfig *NodeConfig = nil +type ServerError struct { + Id int64 + Message string +} + +func NewServerError(serverId int64, message string) *ServerError { + return &ServerError{Id: serverId, Message: message} +} + // NodeConfig 边缘节点配置 type NodeConfig struct { Id int64 `yaml:"id" json:"id"` @@ -87,32 +95,32 @@ func ResetNodeConfig(nodeConfig *NodeConfig) { } // Init 初始化 -func (this *NodeConfig) Init() error { +func (this *NodeConfig) Init() (err error, serverErrors []*ServerError) { this.paddedId = fmt.Sprintf("%08d", this.Id) // servers for _, server := range this.Servers { - err := server.Init() + err = server.Init() if err != nil { // 这里不返回错误,而是继续往下,防止单个服务错误而影响其他服务 - logs.Println("[INIT]server '" + strconv.FormatInt(server.Id, 10) + "' init failed: " + err.Error()) + serverErrors = append(serverErrors, NewServerError(server.Id, "server '"+strconv.FormatInt(server.Id, 10)+"' init failed: "+err.Error())) } } // global config if this.GlobalConfig != nil { - err := this.GlobalConfig.Init() + err = this.GlobalConfig.Init() if err != nil { - return err + return } } // cache policy if len(this.HTTPCachePolicies) > 0 { for _, policy := range this.HTTPCachePolicies { - err := policy.Init() + err = policy.Init() if err != nil { - return err + return } } } @@ -120,18 +128,18 @@ func (this *NodeConfig) Init() error { // firewall policy if len(this.HTTPFirewallPolicies) > 0 { for _, policy := range this.HTTPFirewallPolicies { - err := policy.Init() + err = policy.Init() if err != nil { - return err + return } } } // TOA if this.TOA != nil { - err := this.TOA.Init() + err = this.TOA.Init() if err != nil { - return err + return } } @@ -190,25 +198,25 @@ func (this *NodeConfig) Init() error { // firewall actions for _, action := range this.FirewallActions { - err := action.Init() + err = action.Init() if err != nil { - return err + return } } // metric items this.hasHTTPConnectionMetrics = false for _, item := range this.MetricItems { - err := item.Init() + err = item.Init() if err != nil { - return err + return } if item.IsOn && item.HasHTTPConnectionValue() { this.hasHTTPConnectionMetrics = true } } - return nil + return } // AvailableGroups 根据网络地址和协议分组 diff --git a/pkg/nodeconfigs/node_log_type.go b/pkg/nodeconfigs/node_log_type.go index 593b24c..03c67c1 100644 --- a/pkg/nodeconfigs/node_log_type.go +++ b/pkg/nodeconfigs/node_log_type.go @@ -5,5 +5,6 @@ package nodeconfigs type NodeLogType = string const ( - NodeLogTypeListenAddressFailed NodeLogType = "listenAddressFailed" + NodeLogTypeListenAddressFailed NodeLogType = "listenAddressFailed" + NodeLogTypeServerConfigInitFailed NodeLogType = "serverConfigInitFailed" )