func main() { flag.Parse() configureLog() // Load configuration conf, err := configuration.FromFile(configFilePath) if err != nil { log.Fatal(err) } eventBus := event_bus.New() // Create StatsD client conf.StatsD.CreateClient() // Create Zookeeper connection zkConn := listenToZookeeper(conf, eventBus) // Register handlers handlers := event_bus.Handlers{Conf: &conf, Zookeeper: zkConn} eventBus.Register(handlers.MarathonEventHandler) eventBus.Register(handlers.ServiceEventHandler) // Start server initServer(&conf, zkConn, eventBus) }
func main() { flag.Parse() configureLog() // Load configuration conf, err := configuration.FromFile(configFilePath) if err != nil { log.Fatal(err) } eventBus := event_bus.New() // Wait for died children to avoid zombies signalChannel := make(chan os.Signal, 2) signal.Notify(signalChannel, os.Interrupt, syscall.SIGCHLD) go func() { for { sig := <-signalChannel if sig == syscall.SIGCHLD { r := syscall.Rusage{} syscall.Wait4(-1, nil, 0, &r) } } }() // Create StatsD client conf.StatsD.CreateClient() // Create Zookeeper connection zkConn := listenToZookeeper(conf, eventBus) // Create the storage backend storage, err := service.NewZKStorage(zkConn, conf.Bamboo.Zookeeper) if err != nil { log.Panicf("Failed to create ZK storage: %v", err) } appStorage, err := application.NewZKStorage(zkConn, conf.Bamboo.Zookeeper) if err != nil { log.Panicf("Failed to create application ZK storage: %v", err) } // Register handlers handlers := event_bus.Handlers{Conf: &conf, Storage: storage, AppStorage: appStorage} eventBus.Register(handlers.MarathonEventHandler) eventBus.Register(handlers.ServiceEventHandler) eventBus.Register(handlers.WeightEventHandler) eventBus.Publish(event_bus.MarathonEvent{EventType: "bamboo_startup", Timestamp: time.Now().Format(time.RFC3339)}) // Handle gracefully exit registerOSSignals() // load config api.LoadConfig(conf) // Start server initServer(&conf, storage, appStorage, eventBus) }
func main() { flag.Parse() configureLog() // Load configuration conf, err := configuration.FromFile(configFilePath) if err != nil { log.Fatal(err) } eventBus := event_bus.New() // Wait for died children to avoid zombies signalChannel := make(chan os.Signal, 2) signal.Notify(signalChannel, os.Interrupt, syscall.SIGCHLD) go func() { for { sig := <-signalChannel if sig == syscall.SIGCHLD { r := syscall.Rusage{} syscall.Wait4(-1, nil, 0, &r) } } }() // Create StatsD client conf.StatsD.CreateClient() // Create Zookeeper connection zkConn := listenToZookeeper(conf, eventBus) // Register handlers handlers := event_bus.Handlers{Conf: &conf, Zookeeper: zkConn} eventBus.Register(handlers.MarathonEventHandler) eventBus.Register(handlers.ServiceEventHandler) eventBus.Publish(event_bus.MarathonEvent{EventType: "bamboo_startup", Timestamp: time.Now().Format(time.RFC3339)}) // Handle gracefully exit registerOSSignals() // Start server initServer(&conf, zkConn, eventBus) }