优化错误处理相关代码

This commit is contained in:
刘祥超
2023-08-11 14:38:00 +08:00
parent 93521963b1
commit 2eee314ec8
17 changed files with 87 additions and 76 deletions

View File

@@ -3,7 +3,7 @@
package nodes
import (
"errors"
"fmt"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
"github.com/TeaOSLab/EdgeNode/internal/conns"
@@ -98,7 +98,7 @@ func (this *ClientConn) Read(b []byte) (n int, err error) {
defer func() {
if err != nil {
this.lastErr = errors.New("read error: " + err.Error())
this.lastErr = fmt.Errorf("read error: %w", err)
} else {
this.lastErr = nil
}
@@ -163,7 +163,7 @@ func (this *ClientConn) Write(b []byte) (n int, err error) {
defer func() {
if err != nil {
this.lastErr = errors.New("write error: " + err.Error())
this.lastErr = fmt.Errorf("write error: %w", err)
} else {
this.lastErr = nil
}

View File

@@ -6,6 +6,7 @@ import (
"context"
"crypto/tls"
"errors"
"fmt"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/TeaOSLab/EdgeNode/internal/caches"
@@ -221,7 +222,7 @@ func (this *HTTPCacheTaskManager) fetchKey(key *pb.HTTPCacheTaskKey) error {
req, err := http.NewRequest(http.MethodGet, fullKey, nil)
if err != nil {
return errors.New("invalid url: " + fullKey + ": " + err.Error())
return fmt.Errorf("invalid url: '%s': %w", fullKey, err)
}
// TODO 可以在管理界面自定义Header
@@ -231,7 +232,7 @@ func (this *HTTPCacheTaskManager) fetchKey(key *pb.HTTPCacheTaskKey) error {
resp, err := this.httpClient().Do(req)
if err != nil {
err = this.simplifyErr(err)
return errors.New("request failed: " + fullKey + ": " + err.Error())
return fmt.Errorf("request failed: '%s': %w", fullKey, err)
}
defer func() {
@@ -248,7 +249,7 @@ func (this *HTTPCacheTaskManager) fetchKey(key *pb.HTTPCacheTaskKey) error {
if err != nil {
if err != io.EOF {
err = this.simplifyErr(err)
return errors.New("request failed: " + fullKey + ": " + err.Error())
return fmt.Errorf("request failed: '%s': %w", fullKey, err)
} else {
err = nil
}

View File

@@ -6,6 +6,7 @@ import (
"bufio"
"bytes"
"errors"
"fmt"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/TeaOSLab/EdgeNode/internal/caches"
@@ -863,7 +864,7 @@ func (this *HTTPWriter) SendFile(status int, path string) (int64, error) {
fp, err := os.OpenFile(path, os.O_RDONLY, 0444)
if err != nil {
return 0, errors.New("open file '" + path + "' failed: " + err.Error())
return 0, fmt.Errorf("open file '%s' failed: %w", path, err)
}
defer func() {
_ = fp.Close()

View File

@@ -5,6 +5,7 @@ import (
"context"
"encoding/json"
"errors"
"fmt"
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
iplib "github.com/TeaOSLab/EdgeCommon/pkg/iplibrary"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
@@ -96,11 +97,11 @@ func (this *Node) Test() error {
// 检查是否能连接API
rpcClient, err := rpc.SharedRPC()
if err != nil {
return errors.New("test rpc failed: " + err.Error())
return fmt.Errorf("test rpc failed: %w", err)
}
_, err = rpcClient.APINodeRPC.FindCurrentAPINodeVersion(rpcClient.Context(), &pb.FindCurrentAPINodeVersionRequest{})
if err != nil {
return errors.New("test rpc failed: " + err.Error())
return fmt.Errorf("test rpc failed: %w", err)
}
return nil
@@ -332,7 +333,7 @@ func (this *Node) syncConfig(taskVersion int64) error {
rpcClient, err := rpc.SharedRPC()
if err != nil {
return errors.New("create rpc client failed: " + err.Error())
return fmt.Errorf("create rpc client failed: %w", err)
}
// 获取同步任务
@@ -344,7 +345,7 @@ func (this *Node) syncConfig(taskVersion int64) error {
UseDataMap: true,
})
if err != nil {
return errors.New("read config from rpc failed: " + err.Error())
return fmt.Errorf("read config from rpc failed: %w", err)
}
if !configResp.IsChanged {
return nil
@@ -372,7 +373,7 @@ func (this *Node) syncConfig(taskVersion int64) error {
var nodeConfig = &nodeconfigs.NodeConfig{}
err = json.Unmarshal(configJSON, nodeConfig)
if err != nil {
return errors.New("decode config failed: " + err.Error())
return fmt.Errorf("decode config failed: %w", err)
}
teaconst.NodeId = nodeConfig.Id
teaconst.NodeIdString = types.String(teaconst.NodeId)

View File

@@ -4,7 +4,7 @@ package nodes
import (
"encoding/json"
"errors"
"fmt"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
@@ -35,7 +35,7 @@ func (this *Node) loopTasks() error {
rpcClient, err := rpc.SharedRPC()
if err != nil {
return errors.New("create rpc client failed: " + err.Error())
return fmt.Errorf("create rpc client failed: %w", err)
}
tasksResp, err := rpcClient.NodeTaskRPC.FindNodeTasks(rpcClient.Context(), &pb.FindNodeTasksRequest{
@@ -45,7 +45,7 @@ func (this *Node) loopTasks() error {
if rpc.IsConnError(err) && !Tea.IsTesting() {
return nil
}
return errors.New("read node tasks failed: " + err.Error())
return fmt.Errorf("read node tasks failed: %w", err)
}
for _, task := range tasksResp.NodeTasks {
err := this.execTask(rpcClient, task)
@@ -147,7 +147,7 @@ func (this *Node) execNodeLevelChangedTask(rpcClient *rpc.RPCClient) error {
if len(levelInfoResp.ParentNodesMapJSON) > 0 {
err = json.Unmarshal(levelInfoResp.ParentNodesMapJSON, &parentNodes)
if err != nil {
return errors.New("decode level info failed: " + err.Error())
return fmt.Errorf("decode level info failed: %w", err)
}
}
@@ -174,7 +174,7 @@ func (this *Node) execDDoSProtectionChangedTask(rpcClient *rpc.RPCClient) error
var ddosProtectionConfig = &ddosconfigs.ProtectionConfig{}
err = json.Unmarshal(resp.DdosProtectionJSON, ddosProtectionConfig)
if err != nil {
return errors.New("decode DDoS protection config failed: " + err.Error())
return fmt.Errorf("decode DDoS protection config failed: %w", err)
}
if ddosProtectionConfig != nil && sharedNodeConfig != nil {
@@ -202,13 +202,13 @@ func (this *Node) execGlobalServerConfigChangedTask(rpcClient *rpc.RPCClient) er
var globalServerConfig = serverconfigs.NewGlobalServerConfig()
err = json.Unmarshal(resp.GlobalServerConfigJSON, globalServerConfig)
if err != nil {
return errors.New("decode global server config failed: " + err.Error())
return fmt.Errorf("decode global server config failed: %w", err)
}
if globalServerConfig != nil {
err = globalServerConfig.Init()
if err != nil {
return errors.New("validate global server config failed: " + err.Error())
return fmt.Errorf("validate global server config failed: %w", err)
}
if sharedNodeConfig != nil {
sharedNodeConfig.GlobalServerConfig = globalServerConfig
@@ -256,7 +256,7 @@ func (this *Node) execUpdatingServersTask(rpcClient *rpc.RPCClient) error {
var serverConfigs = []*serverconfigs.ServerConfig{}
err = json.Unmarshal(resp.ServersJSON, &serverConfigs)
if err != nil {
return errors.New("decode server configs failed: " + err.Error())
return fmt.Errorf("decode server configs failed: %w", err)
}
if resp.MaxId > this.lastUpdatingServerListId {