// init initializes the driver. func (driver *MesosSchedulerDriver) init() error { log.Infof("Initializing mesos scheduler driver\n") driver.dispatch = driver.messenger.Send // serialize all callbacks from the messenger guarded := func(h messenger.MessageHandler) messenger.MessageHandler { return messenger.MessageHandler(func(from *upid.UPID, msg proto.Message) { driver.eventLock.Lock() defer driver.eventLock.Unlock() h(from, msg) }) } // Install handlers. driver.messenger.Install(guarded(driver.frameworkRegistered), &mesos.FrameworkRegisteredMessage{}) driver.messenger.Install(guarded(driver.frameworkReregistered), &mesos.FrameworkReregisteredMessage{}) driver.messenger.Install(guarded(driver.resourcesOffered), &mesos.ResourceOffersMessage{}) driver.messenger.Install(guarded(driver.resourceOfferRescinded), &mesos.RescindResourceOfferMessage{}) driver.messenger.Install(guarded(driver.statusUpdated), &mesos.StatusUpdateMessage{}) driver.messenger.Install(guarded(driver.slaveLost), &mesos.LostSlaveMessage{}) driver.messenger.Install(guarded(driver.frameworkMessageRcvd), &mesos.ExecutorToFrameworkMessage{}) driver.messenger.Install(guarded(driver.frameworkErrorRcvd), &mesos.FrameworkErrorMessage{}) driver.messenger.Install(guarded(driver.exitedExecutor), &mesos.ExitedExecutorMessage{}) driver.messenger.Install(guarded(driver.handleMasterChanged), &mesos.InternalMasterChangeDetected{}) driver.messenger.Install(guarded(driver.handleAuthenticationResult), &mesos.InternalAuthenticationResult{}) return nil }
// init initializes the driver. func (driver *MesosExecutorDriver) init() error { log.Infof("Init mesos executor driver\n") log.Infof("Protocol Version: %v\n", mesosutil.MesosVersion) // Parse environments. if err := driver.parseEnviroments(); err != nil { log.Errorf("Failed to parse environments: %v\n", err) return err } guard := func(h messenger.MessageHandler) messenger.MessageHandler { return messenger.MessageHandler(func(from *upid.UPID, pbMsg proto.Message) { driver.lock.Lock() defer driver.lock.Unlock() h(from, pbMsg) }) } // Install handlers. driver.messenger.Install(guard(driver.registered), &mesosproto.ExecutorRegisteredMessage{}) driver.messenger.Install(guard(driver.reregistered), &mesosproto.ExecutorReregisteredMessage{}) driver.messenger.Install(guard(driver.reconnect), &mesosproto.ReconnectExecutorMessage{}) driver.messenger.Install(guard(driver.runTask), &mesosproto.RunTaskMessage{}) driver.messenger.Install(guard(driver.killTask), &mesosproto.KillTaskMessage{}) driver.messenger.Install(guard(driver.statusUpdateAcknowledgement), &mesosproto.StatusUpdateAcknowledgementMessage{}) driver.messenger.Install(guard(driver.frameworkMessage), &mesosproto.FrameworkToExecutorMessage{}) driver.messenger.Install(guard(driver.shutdown), &mesosproto.ShutdownExecutorMessage{}) driver.messenger.Install(guard(driver.frameworkError), &mesosproto.FrameworkErrorMessage{}) return nil }