( cfg *config.ControllerConfig, ctx context.Context, controllerCheck *monitor.ControllerCheck, analyzerCheck *monitor.AnalyzerCheck, )
| 73 | } |
| 74 | |
| 75 | func 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 | } |
no test coverage detected