From 4f3e91d8ca23c647511caae0d3b9fd2a3b225ed7 Mon Sep 17 00:00:00 2001 From: DanB Date: Thu, 23 Jan 2014 12:45:13 +0100 Subject: [PATCH] Default client-server over internal connections, small fixup order of service start --- cmd/cgr-engine/cgr-engine.go | 45 ++++++++++++++++++++++-------------- config/config.go | 6 ++--- config/config_test.go | 6 ++--- data/conf/cgrates.cfg | 6 ++--- engine/action.go | 2 +- 5 files changed, 38 insertions(+), 27 deletions(-) diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index d80c81520..31b98a485 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -295,6 +295,7 @@ func main() { if *mediatorEnabled { cfg.MediatorEnabled = *mediatorEnabled } + if cfg.RaterEnabled { if err := ratingDb.CacheRating(nil, nil, nil); err != nil { engine.Logger.Crit(fmt.Sprintf("Cache rating error: %s", err.Error())) @@ -306,6 +307,7 @@ func main() { } } + if cfg.StorDBType == SAME { logDb = ratingDb.(engine.LogStorage) } else { @@ -326,6 +328,7 @@ func main() { engine.SetDebitPeriod(dp) } } + stopHandled := false // Async starts here if cfg.RaterEnabled && cfg.RaterBalancer != "" && !cfg.BalancerEnabled { @@ -333,6 +336,7 @@ func main() { go stopRaterSignalHandler() stopHandled = true } + responder := &engine.Responder{ExitChan: exitChan} apier := &apier.ApierV1{StorDb: loadDb, RatingDb: ratingDb, AccountDb: accountDb, CdrDb: cdrDb, Config: cfg} @@ -341,6 +345,7 @@ func main() { server.RpcRegister(responder) server.RpcRegister(apier) } + if cfg.BalancerEnabled { engine.Logger.Info("Starting CGRateS Balancer") go stopBalancerSignalHandler() @@ -353,9 +358,11 @@ func main() { bal.AddClient("local", new(engine.ResponderWorker)) } } + if !stopHandled { go generalSignalHandler() } + if cfg.SchedulerEnabled { engine.Logger.Info("Starting CGRateS Scheduler.") go func() { @@ -367,6 +374,26 @@ func main() { }() } + if cfg.HistoryServerEnabled || cfg.HistoryAgentEnabled { + engine.Logger.Info("Starting History Service.") + go startHistoryScribe() + } + + go server.ServeGOB(cfg.RPCGOBListen) + go server.ServeJSON(cfg.RPCJSONListen) + + if cfg.CDRSEnabled { + engine.Logger.Info("Starting CGRateS CDR Server.") + go startCDRS(responder, cdrDb) + } + + go server.ServeHTTP(cfg.HTTPListen) + + if cfg.MediatorEnabled { + engine.Logger.Info("Starting CGRateS Mediator.") + go startMediator(responder, logDb, cdrDb) + } + if cfg.SMEnabled { engine.Logger.Info("Starting CGRateS SessionManager.") go startSessionManager(responder, logDb) @@ -374,27 +401,11 @@ func main() { go shutdownSessionmanagerSingnalHandler() } - if cfg.MediatorEnabled { - engine.Logger.Info("Starting CGRateS Mediator.") - go startMediator(responder, logDb, cdrDb) - } - - if cfg.CDRSEnabled { - engine.Logger.Info("Starting CGRateS CDR Server.") - go startCDRS(responder, cdrDb) - } - - if cfg.HistoryServerEnabled || cfg.HistoryAgentEnabled { - engine.Logger.Info("Starting History Service.") - go startHistoryScribe() - } if cfg.CdrcEnabled { engine.Logger.Info("Starting CGRateS CDR Client.") go startCdrc() } - go server.ServeGOB(cfg.RPCGOBListen) - go server.ServeJSON(cfg.RPCJSONListen) - go server.ServeHTTP(cfg.HTTPListen) + <-exitChan if *pidFile != "" { if err := os.Remove(*pidFile); err != nil { diff --git a/config/config.go b/config/config.go index 596521f6d..bdfa88b82 100644 --- a/config/config.go +++ b/config/config.go @@ -202,7 +202,7 @@ func (self *CGRConfig) setDefaults() error { self.CdrcDurationField = "9" self.CdrcExtraFields = []string{} self.MediatorEnabled = false - self.MediatorRater = "127.0.0.1:2013" + self.MediatorRater = "internal" self.MediatorRaterReconnects = 3 self.MediatorRunIds = []string{} self.MediatorSubjectFields = []string{} @@ -216,7 +216,7 @@ func (self *CGRConfig) setDefaults() error { self.MediatorDurationFields = []string{} self.SMEnabled = false self.SMSwitchType = FS - self.SMRater = "127.0.0.1:2013" + self.SMRater = "internal" self.SMRaterReconnects = 3 self.SMDebitInterval = 10 self.SMMaxCallDuration = time.Duration(3) * time.Hour @@ -225,7 +225,7 @@ func (self *CGRConfig) setDefaults() error { self.FreeswitchReconnects = 5 self.HistoryAgentEnabled = false self.HistoryServerEnabled = false - self.HistoryServer = "127.0.0.1:2013" + self.HistoryServer = "internal" self.HistoryDir = "/var/log/cgrates/history" self.HistorySaveInterval = time.Duration(1) * time.Second self.MailerServer = "localhost:25" diff --git a/config/config_test.go b/config/config_test.go index 1ba0daf59..17b8f8ad6 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -103,7 +103,7 @@ func TestDefaults(t *testing.T) { eCfg.CdrcDurationField = "9" eCfg.CdrcExtraFields = []string{} eCfg.MediatorEnabled = false - eCfg.MediatorRater = "127.0.0.1:2013" + eCfg.MediatorRater = "internal" eCfg.MediatorRaterReconnects = 3 eCfg.MediatorRunIds = []string{} eCfg.MediatorSubjectFields = []string{} @@ -117,7 +117,7 @@ func TestDefaults(t *testing.T) { eCfg.MediatorDurationFields = []string{} eCfg.SMEnabled = false eCfg.SMSwitchType = FS - eCfg.SMRater = "127.0.0.1:2013" + eCfg.SMRater = "internal" eCfg.SMRaterReconnects = 3 eCfg.SMDebitInterval = 10 eCfg.SMMaxCallDuration = time.Duration(3) * time.Hour @@ -125,7 +125,7 @@ func TestDefaults(t *testing.T) { eCfg.FreeswitchPass = "ClueCon" eCfg.FreeswitchReconnects = 5 eCfg.HistoryAgentEnabled = false - eCfg.HistoryServer = "127.0.0.1:2013" + eCfg.HistoryServer = "internal" eCfg.HistoryServerEnabled = false eCfg.HistoryDir = "/var/log/cgrates/history" eCfg.HistorySaveInterval = time.Duration(1) * time.Second diff --git a/data/conf/cgrates.cfg b/data/conf/cgrates.cfg index 2d5b3e27f..63f5144f8 100644 --- a/data/conf/cgrates.cfg +++ b/data/conf/cgrates.cfg @@ -77,7 +77,7 @@ [mediator] # enabled = false # Starts Mediator service: . -# rater = 127.0.0.1:2013 # Address where to reach the Rater: +# rater = internal # Address where to reach the Rater: # rater_reconnects = 3 # Number of reconnects to rater before giving up. # run_ids = # Identifiers of each extra mediation to run on CDRs # reqtype_fields = # Name of request type fields to be used during extra mediation. Use index number in case of .csv cdrs. @@ -93,7 +93,7 @@ [session_manager] # enabled = false # Starts SessionManager service: . # switch_type = freeswitch # Defines the type of switch behind: . -# rater = 127.0.0.1:2013 # Address where to reach the Rater. +# rater = internal # Address where to reach the Rater. # rater_reconnects = 3 # Number of reconnects to rater before giving up. # debit_interval = 10 # Interval to perform debits on. # max_call_duration = 3h # Maximum call duration a prepaid call can last @@ -110,7 +110,7 @@ [history_agent] # enabled = false # Starts History as a client: . -# server = 127.0.0.1:2013 # Address where to reach the master history server: +# server = internal # Address where to reach the master history server: [mailer] # server = localhost # The server to use when sending emails out diff --git a/engine/action.go b/engine/action.go index 31c8633c4..dd93249d6 100644 --- a/engine/action.go +++ b/engine/action.go @@ -238,7 +238,7 @@ func mailAsync(ub *UserBalance, a *Action) error { } toAddrStr += addr } - message := []byte(fmt.Sprintf("To: %s\r\nSubject: [CGR Notification]: Threshold hit on balance: %s\r\n\r\nTime: \r\n\t%s\r\n\r\nBalance:\r\n\t%s\r\n\r\nYour faithful CGR Balance Monitor\r\n", toAddrStr, ub.Id, time.Now(), ubJson)) + message := []byte(fmt.Sprintf("To: %s\r\nSubject: [CGR Notification] Threshold hit on balance: %s\r\n\r\nTime: \r\n\t%s\r\n\r\nBalance:\r\n\t%s\r\n\r\nYours faithfully,\r\nCGR Balance Monitor\r\n", toAddrStr, ub.Id, time.Now(), ubJson)) auth := smtp.PlainAuth("", cgrCfg.MailerAuthUser, cgrCfg.MailerAuthPass, strings.Split(cgrCfg.MailerServer,":")[0]) // We only need host part, so ignore port go func() { for i := 0; i < 5; i++ { // Loop so we can increase the success rate on best effort