func (srvMngr *ServiceManager) StopScheduler() error { var sched *scheduler.Scheduler srvMngr.Lock() if srvMngr.sched != nil { sched = srvMngr.sched srvMngr.sched = nil // optimize the lock and release here } srvMngr.Unlock() if sched == nil { return utils.NewCGRError(utils.ServiceManager, utils.CapitalizedMessage(utils.ServiceAlreadyRunning), utils.ServiceAlreadyRunning, "the scheduler is not running") } srvMngr.cfg.SchedulerEnabled = false sched.Shutdown() return nil }