MCPcopy Index your code
hub / github.com/GoEdgeLab/EdgeNode / loopTasks

Method loopTasks

internal/nodes/node_tasks.go:31–65  ·  view source on GitHub ↗

循环

()

Source from the content-addressed store, hash-verified

29
30// 循环
31func (this *Node) loopTasks() error {
32 var tr = trackers.Begin("CHECK_NODE_CONFIG_CHANGES")
33 defer tr.End()
34
35 // 检查api_node.yaml是否存在
36 var apiConfigFile = Tea.ConfigFile(configs.ConfigFileName)
37 _, err := os.Stat(apiConfigFile)
38 if err != nil {
39 return nil
40 }
41
42 rpcClient, err := rpc.SharedRPC()
43 if err != nil {
44 return fmt.Errorf("create rpc client failed: %w", err)
45 }
46
47 tasksResp, err := rpcClient.NodeTaskRPC.FindNodeTasks(rpcClient.Context(), &pb.FindNodeTasksRequest{
48 Version: this.lastTaskVersion,
49 })
50 if err != nil {
51 if rpc.IsConnError(err) && !Tea.IsTesting() {
52 return nil
53 }
54 return fmt.Errorf("read node tasks failed: %w", err)
55 }
56 for _, task := range tasksResp.NodeTasks {
57 err := this.execTask(rpcClient, task)
58 if !this.finishTask(task.Id, task.Version, err) {
59 // 防止失败的任务无法重试
60 break
61 }
62 }
63
64 return nil
65}
66
67// 执行任务
68func (this *Node) execTask(rpcClient *rpc.RPCClient, task *pb.NodeTask) error {

Callers 1

startSyncTimerMethod · 0.95

Calls 9

execTaskMethod · 0.95
finishTaskMethod · 0.95
BeginFunction · 0.92
SharedRPCFunction · 0.92
IsConnErrorFunction · 0.92
ErrorfMethod · 0.80
ContextMethod · 0.80
StatMethod · 0.65
EndMethod · 0.45

Tested by

no test coverage detected