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

Function Start

server/controller/controller/controller.go:63–221  ·  view source on GitHub ↗
(ctx context.Context, revision, configPath, serverLogFile string, shared *servercommon.ControllerIngesterShared)

Source from the content-addressed store, hash-verified

61type Controller struct{}
62
63func Start(ctx context.Context, revision, configPath, serverLogFile string, shared *servercommon.ControllerIngesterShared) {
64 common.InitEnvData()
65 flag.Parse()
66
67 serverCfg := config.DefaultConfig()
68 serverCfg.Load(configPath)
69 cfg := &serverCfg.ControllerConfig
70 bytes, _ := yaml.Marshal(cfg)
71 log.Info("==================== Launching DeepFlow-Server-Controller ====================")
72 log.Infof("controller config:\n%s", string(bytes))
73 setGlobalConfig(cfg)
74
75 httpServer := http.NewServer(serverLogFile, cfg)
76 httpServer.Start()
77
78 defer router.SetInitStageForHealthChecker(router.OK)
79
80 router.SetInitStageForHealthChecker("Election init")
81 // start election
82 if common.IsStandaloneRunningMode() == false {
83 // in standalone mode, We have no way to elect because there is no k8s module
84 go election.Start(ctx, cfg)
85 }
86
87 isMasterController := IsMasterController(cfg)
88 if isMasterController {
89 router.SetInitStageForHealthChecker(router.StageMetadbMigration)
90 migrateMetadb(cfg)
91 }
92
93 router.SetInitStageForHealthChecker("Metadb init")
94 // 初始化 Metadb
95 if err := metadb.GetDBs().Init(cfg.MetadbCfg); err != nil {
96 log.Errorf("init metadb failed: %s", err.Error())
97 time.Sleep(time.Second)
98 os.Exit(0)
99 }
100
101 if isMasterController && revision != "" {
102 var masterSysConfig model.SysConfiguration
103 err := metadb.DefaultDB.
104 Where(model.SysConfiguration{ParamName: common.SYS_CONFIG_MASTER_COMMIT_ID}).
105 Assign(model.SysConfiguration{Value: revision}).
106 FirstOrCreate(&masterSysConfig).Error
107 if err != nil {
108 log.Warningf("upsert master sys config param (%s:%s) failed: %s", common.SYS_CONFIG_MASTER_COMMIT_ID, revision, err.Error())
109 }
110 } else if !IsMasterRegion(cfg) {
111 var masterSysConfig model.SysConfiguration
112 err := metadb.DefaultDB.Where(model.SysConfiguration{ParamName: common.SYS_CONFIG_MASTER_COMMIT_ID}).First(&masterSysConfig).Error
113 if err != nil {
114 log.Warningf("get master sys config param (%s) failed: %s", common.SYS_CONFIG_MASTER_COMMIT_ID, err.Error())
115 } else {
116 if revision != masterSysConfig.Value {
117 log.Errorf("current commit id (%s) is different from master commit id (%s)", revision, masterSysConfig.Value)
118 os.Exit(0)
119 }
120 }

Callers

nothing calls this directly

Calls 15

StartMethod · 0.95
StartMethod · 0.95
StartMethod · 0.95
SetControllerCheckerMethod · 0.95
SetAnalyzerCheckerMethod · 0.95
SetGenesisMethod · 0.95
SetManagerMethod · 0.95
RegisterRoutersMethod · 0.95
setGlobalConfigFunction · 0.85
migrateMetadbFunction · 0.85
IsMasterRegionFunction · 0.85

Tested by

no test coverage detected