diff --git a/apier/v1/apier.go b/apier/v1/apier.go index cf44c3fcb..34c49adf1 100644 --- a/apier/v1/apier.go +++ b/apier/v1/apier.go @@ -348,7 +348,10 @@ func (apiv1 *ApierV1) LoadTariffPlanFromStorDb(attrs AttrLoadTpFromStorDb, reply if err := dbReader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil { return utils.NewErrServerError(err) } - + utils.Logger.Info("ApierV1.LoadTariffPlanFromStorDb, reloading scheduler.") + if err := dbReader.ReloadScheduler(true); err != nil { + return utils.NewErrServerError(err) + } *reply = utils.OK return nil } @@ -839,7 +842,8 @@ func (apiv1 *ApierV1) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder, // create the TpReader loader, err := engine.NewTpReader(apiv1.DataManager.DataDB(), - engine.NewFileCSVStorage(utils.CSV_SEP, attrs.FolderPath, attrs.Recursive), "", apiv1.Config.GeneralCfg().DefaultTimezone, + engine.NewFileCSVStorage(utils.CSV_SEP, attrs.FolderPath, attrs.Recursive), + "", apiv1.Config.GeneralCfg().DefaultTimezone, apiv1.CacheS, apiv1.SchedulerS) if err != nil { return utils.NewErrServerError(err) @@ -873,6 +877,10 @@ func (apiv1 *ApierV1) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder, if err := loader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil { return utils.NewErrServerError(err) } + utils.Logger.Info("ApierV1.LoadTariffPlanFromFolder, reloading scheduler.") + if err := loader.ReloadScheduler(true); err != nil { + return utils.NewErrServerError(err) + } *reply = utils.OK return nil } @@ -930,6 +938,10 @@ func (apiv1 *ApierV1) RemoveTPFromFolder(attrs utils.AttrLoadTpFromFolder, reply if err := loader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil { return utils.NewErrServerError(err) } + utils.Logger.Info("ApierV1.RemoveTPFromFolder, reloading scheduler.") + if err := loader.ReloadScheduler(true); err != nil { + return utils.NewErrServerError(err) + } *reply = utils.OK return nil } @@ -973,7 +985,10 @@ func (apiv1 *ApierV1) RemoveTPFromStorDB(attrs AttrLoadTpFromStorDb, reply *stri if err := dbReader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil { return utils.NewErrServerError(err) } - + utils.Logger.Info("ApierV1.RemoveTPFromStorDB, reloading scheduler.") + if err := dbReader.ReloadScheduler(true); err != nil { + return utils.NewErrServerError(err) + } *reply = utils.OK return nil } diff --git a/apier/v2/apier.go b/apier/v2/apier.go index 2a2662881..968c42f6b 100644 --- a/apier/v2/apier.go +++ b/apier/v2/apier.go @@ -144,6 +144,10 @@ func (self *ApierV2) LoadTariffPlanFromFolder(attrs utils.AttrLoadTpFromFolder, if err := loader.ReloadCache(caching, true, attrs.ArgDispatcher); err != nil { return utils.NewErrServerError(err) } + utils.Logger.Info("ApierV2.LoadTariffPlanFromFolder, reloading scheduler.") + if err := loader.ReloadScheduler(true); err != nil { + return utils.NewErrServerError(err) + } loadHistList, err := self.DataManager.DataDB().GetLoadHistory(1, true, utils.NonTransactional) if err != nil { return err diff --git a/cmd/cgr-loader/cgr-loader.go b/cmd/cgr-loader/cgr-loader.go index 279d11a9c..d642e9ddb 100755 --- a/cmd/cgr-loader/cgr-loader.go +++ b/cmd/cgr-loader/cgr-loader.go @@ -373,6 +373,9 @@ func main() { }); err != nil { log.Fatal("Could not reload cache: ", err) } + if err := tpReader.ReloadScheduler(*verbose); err != nil { + log.Fatal("Could not reload scheduler: ", err) + } } else { if err := tpReader.RemoveFromDatabase(*verbose, *disableReverse); err != nil { log.Fatal("Could not delete from database: ", err) diff --git a/engine/tpreader.go b/engine/tpreader.go index b67b9fede..5111c027d 100644 --- a/engine/tpreader.go +++ b/engine/tpreader.go @@ -2502,17 +2502,6 @@ func (tpr *TpReader) ReloadCache(caching string, verbose bool, argDispatcher *ut log.Printf("WARNING: Got error on cache clear: %s\n", err.Error()) } - // in case we have action plans reload the scheduler - if len(aps) != 0 { - if verbose { - log.Print("Reloading scheduler") - } - if err = tpr.schedulerS.Call(utils.SchedulerSv1Reload, - new(utils.CGREventWithArgDispatcher), &reply); err != nil { - log.Printf("WARNING: Got error on scheduler reload: %s\n", err.Error()) - } - } - //get loadIDs for all types loadIDs, err := tpr.dm.GetItemLoadIDs(utils.EmptyString, false) if err != nil { @@ -2527,3 +2516,23 @@ func (tpr *TpReader) ReloadCache(caching string, verbose bool, argDispatcher *ut tpr.Init() return } + +func (tpr *TpReader) ReloadScheduler(verbose bool) (err error) { + var reply string + aps, _ := tpr.GetLoadedIds(utils.ACTION_PLAN_PREFIX) + // in case we have action plans reload the scheduler + if len(aps) != 0 { + if tpr.schedulerS == nil { + log.Print("Scheduler required but the connection is nil") + return + } + if verbose { + log.Print("Reloading scheduler") + } + if err = tpr.schedulerS.Call(utils.SchedulerSv1Reload, + new(utils.CGREventWithArgDispatcher), &reply); err != nil { + log.Printf("WARNING: Got error on scheduler reload: %s\n", err.Error()) + } + } + return +}