MCPcopy Create free account
hub / github.com/deepflowio/deepflow / checkAndStartMasterFunctions

Function checkAndStartMasterFunctions

server/controller/controller/master.go:75–197  ·  view source on GitHub ↗
(
	cfg *config.ControllerConfig, ctx context.Context,
	controllerCheck *monitor.ControllerCheck, analyzerCheck *monitor.AnalyzerCheck,
)

Source from the content-addressed store, hash-verified

73}
74
75func checkAndStartMasterFunctions(
76 cfg *config.ControllerConfig, ctx context.Context,
77 controllerCheck *monitor.ControllerCheck, analyzerCheck *monitor.AnalyzerCheck,
78) {
79
80 // 定时检查当前是否为master controller
81 // 仅master controller才启动以下goroutine
82 // - tagrecorder
83 // - 控制器和数据节点检查
84 // - license分配和检查
85 // - resource id manager
86 // - clean deleted/dirty resource data
87 // - prometheus encoder
88 // - prometheus app label layout updater
89 // - http resource refresh task manager
90
91 // 从区域控制器无需判断是否为master controller
92 if !IsMasterRegion(cfg) {
93 return
94 }
95
96 vtapCheck := vtap.NewVTapCheck(cfg.MonitorCfg, ctx)
97 vtapRebalanceCheck := vtap.NewRebalanceCheck(cfg.MonitorCfg, ctx)
98 vtapLicenseAllocation := license.NewVTapLicenseAllocation(cfg.MonitorCfg, ctx)
99 recorderResource := recorder.GetResource()
100 domainChecker := resoureservice.NewDomainCheck(ctx)
101 prometheus := prometheus.GetSingleton()
102 tagRecorder := tagrecorder.GetSingleton()
103 deletedORGChecker := service.GetDeletedORGChecker(ctx, cfg.FPermit)
104
105 httpService := http.GetSingleton()
106
107 var sCtx context.Context
108 var sCancel context.CancelFunc
109
110 masterController := ""
111 thisIsMasterController := false
112 for range time.Tick(time.Minute) {
113 newThisIsMasterController, newMasterController, err := election.IsMasterControllerAndReturnIP()
114 if err != nil {
115 continue
116 }
117 if masterController != newMasterController {
118 if newThisIsMasterController {
119 thisIsMasterController = true
120 log.Infof("I am the master controller now, previous master controller is %s", masterController)
121
122 sCtx, sCancel = context.WithCancel(ctx)
123
124 migrateMetadb(cfg)
125
126 // 启动资源ID管理器
127 err := recorderResource.IDManagers.Start(sCtx)
128 if err != nil {
129 log.Errorf("resource id manager start failed: %s", err.Error())
130 time.Sleep(time.Second)
131 os.Exit(0)
132 }

Callers 1

StartFunction · 0.85

Calls 11

StartMethod · 0.95
StartMethod · 0.95
StartMethod · 0.95
IsMasterRegionFunction · 0.85
migrateMetadbFunction · 0.85
StartMethod · 0.65
ErrorMethod · 0.65
StopMethod · 0.65
GetResourceMethod · 0.45
InfofMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected