mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-22 07:38:45 +05:00
Scheduler to wait for cache to load before starting
This commit is contained in:
@@ -484,7 +484,10 @@ func startCDRS(internalCdrSChan chan *engine.CdrServer, logDb engine.LogStorage,
|
||||
internalCdrSChan <- cdrServer // Signal that cdrS is operational
|
||||
}
|
||||
|
||||
func startScheduler(internalSchedulerChan chan *scheduler.Scheduler, ratingDb engine.RatingStorage, exitChan chan bool) {
|
||||
func startScheduler(internalSchedulerChan chan *scheduler.Scheduler, cacheDoneChan chan struct{}, ratingDb engine.RatingStorage, exitChan chan bool) {
|
||||
// Wait for cache to load data before starting
|
||||
cacheDone := <- cacheDoneChan
|
||||
cacheDoneChan <- cacheDone
|
||||
utils.Logger.Info("Starting CGRateS Scheduler.")
|
||||
sched := scheduler.NewScheduler()
|
||||
go reloadSchedulerSingnalHandler(sched, ratingDb)
|
||||
@@ -666,6 +669,7 @@ func main() {
|
||||
// Define internal connections via channels
|
||||
internalBalancerChan := make(chan *balancer2go.Balancer, 1)
|
||||
internalRaterChan := make(chan *engine.Responder, 1)
|
||||
cacheDoneChan := make(chan struct{}, 1)
|
||||
internalSchedulerChan := make(chan *scheduler.Scheduler, 1)
|
||||
internalCdrSChan := make(chan *engine.CdrServer, 1)
|
||||
internalCdrStatSChan := make(chan engine.StatsInterface, 1)
|
||||
@@ -681,13 +685,13 @@ func main() {
|
||||
|
||||
// Start rater service
|
||||
if cfg.RaterEnabled {
|
||||
go startRater(internalRaterChan, internalBalancerChan, internalSchedulerChan, internalCdrStatSChan, internalHistorySChan, internalPubSubSChan, internalUserSChan, internalAliaseSChan,
|
||||
go startRater(internalRaterChan, cacheDoneChan, internalBalancerChan, internalSchedulerChan, internalCdrStatSChan, internalHistorySChan, internalPubSubSChan, internalUserSChan, internalAliaseSChan,
|
||||
server, ratingDb, accountDb, loadDb, cdrDb, logDb, &stopHandled, exitChan)
|
||||
}
|
||||
|
||||
// Start Scheduler
|
||||
if cfg.SchedulerEnabled {
|
||||
go startScheduler(internalSchedulerChan, ratingDb, exitChan)
|
||||
go startScheduler(internalSchedulerChan, cacheDoneChan, ratingDb, exitChan)
|
||||
}
|
||||
|
||||
// Start CDR Server
|
||||
|
||||
@@ -39,7 +39,7 @@ func startBalancer(internalBalancerChan chan *balancer2go.Balancer, stopHandled
|
||||
}
|
||||
|
||||
// Starts rater and reports on chan
|
||||
func startRater(internalRaterChan chan *engine.Responder, internalBalancerChan chan *balancer2go.Balancer, internalSchedulerChan chan *scheduler.Scheduler,
|
||||
func startRater(internalRaterChan chan *engine.Responder, cacheDoneChan chan struct{}, internalBalancerChan chan *balancer2go.Balancer, internalSchedulerChan chan *scheduler.Scheduler,
|
||||
internalCdrStatSChan chan engine.StatsInterface, internalHistorySChan chan history.Scribe,
|
||||
internalPubSubSChan chan engine.PublisherSubscriber, internalUserSChan chan engine.UserService, internalAliaseSChan chan engine.AliasService,
|
||||
server *utils.Server,
|
||||
@@ -62,7 +62,7 @@ func startRater(internalRaterChan chan *engine.Responder, internalBalancerChan c
|
||||
exitChan <- true
|
||||
return
|
||||
}
|
||||
|
||||
cacheDoneChan <- struct{}{}
|
||||
}()
|
||||
|
||||
// Retrieve scheduler for it's API methods
|
||||
|
||||
Reference in New Issue
Block a user