diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index af741e9c7..3e915692c 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -454,8 +454,9 @@ func main() { cfg.LazySanityCheck() - var loadDb engine.LoadStorage - var cdrDb engine.CdrStorage + // we should use only one database for StorDB + var storDb engine.StorDB + // var cdrDb engine.CdrStorage dmService := services.NewDataDBService(cfg) if dmService.ShouldRun() { // Some services can run without db, ie: CDRC if err = dmService.Start(); err != nil { @@ -475,10 +476,7 @@ func main() { return } defer storDb.Close() - // loadDb,cdrDb and storDb are all mapped on the same stordb storage - loadDb = storDb.(engine.LoadStorage) - cdrDb = storDb.(engine.CdrStorage) - engine.SetCdrStorage(cdrDb) + engine.SetCdrStorage(storDb) if err := engine.CheckVersions(storDb); err != nil { fmt.Println(err.Error()) return @@ -486,7 +484,6 @@ func main() { } // Done initing DBs engine.SetRoundingDecimals(cfg.GeneralCfg().RoundingDecimals) - engine.SetRpSubjectPrefixMatching(cfg.RalsCfg().RpSubjectPrefixMatching) // Rpc/http server server := utils.NewServer() @@ -532,11 +529,11 @@ func main() { attrS.GetIntenternalChan(), stS.GetIntenternalChan(), reS.GetIntenternalChan(), dspS.GetIntenternalChan()) schS := services.NewSchedulerService(cfg, dmService, cacheS, filterSChan, server, internalCDRServerChan, dspS.GetIntenternalChan()) - rals := services.NewRalService(cfg, dmService, cdrDb, loadDb, cacheS, filterSChan, server, + rals := services.NewRalService(cfg, dmService, storDb, storDb, cacheS, filterSChan, server, tS.GetIntenternalChan(), stS.GetIntenternalChan(), internalCacheSChan, schS.GetIntenternalChan(), attrS.GetIntenternalChan(), dspS.GetIntenternalChan(), schS, exitChan) - cdrS := services.NewCDRServer(cfg, dmService, cdrDb, filterSChan, server, internalCDRServerChan, + cdrS := services.NewCDRServer(cfg, dmService, storDb, filterSChan, server, internalCDRServerChan, chrS.GetIntenternalChan(), rals.GetResponder().GetIntenternalChan(), attrS.GetIntenternalChan(), tS.GetIntenternalChan(), stS.GetIntenternalChan(), dspS.GetIntenternalChan()) diff --git a/cmd/cgr-loader/cgr-loader.go b/cmd/cgr-loader/cgr-loader.go index a297ee17d..77b936de2 100755 --- a/cmd/cgr-loader/cgr-loader.go +++ b/cmd/cgr-loader/cgr-loader.go @@ -273,7 +273,7 @@ func main() { } if *fromStorDB || *toStorDB { - if storDb, err = engine.ConfigureLoadStorage(ldrCfg.StorDbCfg().Type, + if storDb, err = engine.NewStorDBConn(ldrCfg.StorDbCfg().Type, ldrCfg.StorDbCfg().Host, ldrCfg.StorDbCfg().Port, ldrCfg.StorDbCfg().Name, ldrCfg.StorDbCfg().User, ldrCfg.StorDbCfg().Password, ldrCfg.StorDbCfg().SSLMode, diff --git a/config/config.go b/config/config.go index 9e12db791..58940392c 100755 --- a/config/config.go +++ b/config/config.go @@ -179,10 +179,6 @@ func NewDefaultCGRConfig() (cfg *CGRConfig, err error) { cfg.ConfigReloads[utils.CDRC] <- struct{}{} // Unlock the channel cfg.ConfigReloads[utils.CDRE] = make(chan struct{}, 1) cfg.ConfigReloads[utils.CDRE] <- struct{}{} // Unlock the channel - cfg.ConfigReloads[utils.DIAMETER_AGENT] = make(chan struct{}, 1) - cfg.ConfigReloads[utils.DIAMETER_AGENT] <- struct{}{} // Unlock the channel - cfg.ConfigReloads[utils.SMAsterisk] = make(chan struct{}, 1) - cfg.ConfigReloads[utils.SMAsterisk] <- struct{}{} // Unlock the channel var cgrJsonCfg *CgrJsonCfg if cgrJsonCfg, err = NewCgrJsonCfgFromBytes([]byte(CGRATES_CFG_JSON)); err != nil { diff --git a/engine/calldesc.go b/engine/calldesc.go index 4a8bc47e3..c988238d8 100644 --- a/engine/calldesc.go +++ b/engine/calldesc.go @@ -63,7 +63,7 @@ var ( rpSubjectPrefixMatching bool ) -// Exported method to set the storage getter. +// SetDataStorage is the exported method to set the storage getter. func SetDataStorage(dm2 *DataManager) { dm = dm2 } @@ -76,7 +76,7 @@ func SetStatS(stsS rpcclient.RpcClientConnection) { statS = stsS } -// Sets the global rounding method and decimal precision for GetCost method +// SetRoundingDecimals sets the global rounding method and decimal precision for GetCost method func SetRoundingDecimals(rd int) { globalRoundingDecimals = rd } @@ -85,13 +85,12 @@ func SetRpSubjectPrefixMatching(flag bool) { rpSubjectPrefixMatching = flag } -/* -Sets the database for CDR storing, used by *cdrlog in first place -*/ +// SetCdrStorage sets the database for CDR storing, used by *cdrlog in first place func SetCdrStorage(cStorage CdrStorage) { cdrStorage = cStorage } +// SetSchedCdrsConns sets the connection between action and CDRServer func SetSchedCdrsConns(sc rpcclient.RpcClientConnection) { schedCdrsConns = sc if schedCdrsConns != nil && reflect.ValueOf(schedCdrsConns).IsNil() { diff --git a/engine/libtest.go b/engine/libtest.go index 2d0f07261..313529b6d 100644 --- a/engine/libtest.go +++ b/engine/libtest.go @@ -335,7 +335,7 @@ func InitDataDb(cfg *config.CGRConfig) error { } func InitStorDb(cfg *config.CGRConfig) error { - storDb, err := ConfigureLoadStorage(cfg.StorDbCfg().Type, + storDb, err := NewStorDBConn(cfg.StorDbCfg().Type, cfg.StorDbCfg().Host, cfg.StorDbCfg().Port, cfg.StorDbCfg().Name, cfg.StorDbCfg().User, cfg.StorDbCfg().Password, cfg.StorDbCfg().SSLMode, diff --git a/engine/storage_cdrs_it_test.go b/engine/storage_cdrs_it_test.go index a8f99782f..0bb785c5f 100644 --- a/engine/storage_cdrs_it_test.go +++ b/engine/storage_cdrs_it_test.go @@ -100,7 +100,7 @@ func testSetCDR(cfg *config.CGRConfig) error { if err := InitStorDb(cfg); err != nil { return err } - cdrStorage, err := ConfigureCdrStorage(cfg.StorDbCfg().Type, + cdrStorage, err := NewStorDBConn(cfg.StorDbCfg().Type, cfg.StorDbCfg().Host, cfg.StorDbCfg().Port, cfg.StorDbCfg().Name, cfg.StorDbCfg().User, cfg.StorDbCfg().Password, cfg.StorDbCfg().SSLMode, @@ -207,7 +207,7 @@ func testSMCosts(cfg *config.CGRConfig) error { if err := InitStorDb(cfg); err != nil { return fmt.Errorf("testSMCosts #1 err: %v", err) } - cdrStorage, err := ConfigureCdrStorage(cfg.StorDbCfg().Type, + cdrStorage, err := NewStorDBConn(cfg.StorDbCfg().Type, cfg.StorDbCfg().Host, cfg.StorDbCfg().Port, cfg.StorDbCfg().Name, cfg.StorDbCfg().User, cfg.StorDbCfg().Password, cfg.StorDbCfg().SSLMode, @@ -270,7 +270,7 @@ func testGetCDRs(cfg *config.CGRConfig) error { cfg.StorDbCfg().PrefixIndexedFields = []string{ utils.Destination, } - cdrStorage, err := ConfigureCdrStorage(cfg.StorDbCfg().Type, + cdrStorage, err := NewStorDBConn(cfg.StorDbCfg().Type, cfg.StorDbCfg().Host, cfg.StorDbCfg().Port, cfg.StorDbCfg().Name, cfg.StorDbCfg().User, cfg.StorDbCfg().Password, cfg.StorDbCfg().SSLMode, diff --git a/engine/storage_utils.go b/engine/storage_utils.go index 59b1453ce..d9dad8ef2 100644 --- a/engine/storage_utils.go +++ b/engine/storage_utils.go @@ -82,47 +82,7 @@ func NewStorDBConn(dbType, host, port, name, user, pass, sslmode string, return } -// ConfigureLoadStorage returns a LoadStorage based on dbType -func ConfigureLoadStorage(dbType, host, port, name, user, pass, sslmode string, - maxConn, maxIdleConn, connMaxLifetime int, - stringIndexedFields, prefixIndexedFields []string) (db LoadStorage, err error) { - switch dbType { - case utils.POSTGRES: - db, err = NewPostgresStorage(host, port, name, user, pass, sslmode, maxConn, maxIdleConn, connMaxLifetime) - case utils.MYSQL: - db, err = NewMySQLStorage(host, port, name, user, pass, maxConn, maxIdleConn, connMaxLifetime) - case utils.MONGO: - db, err = NewMongoStorage(host, port, name, user, pass, utils.StorDB, stringIndexedFields, false) - case utils.INTERNAL: - db = NewInternalDB(stringIndexedFields, prefixIndexedFields) - default: - err = fmt.Errorf("unknown db '%s' valid options are [%s, %s, %s, %s]", - dbType, utils.MYSQL, utils.MONGO, utils.POSTGRES, utils.INTERNAL) - } - return -} - -// ConfigureCdrStorage returns a CdrStorage based on dbType -func ConfigureCdrStorage(dbType, host, port, name, user, pass, sslmode string, - maxConn, maxIdleConn, connMaxLifetime int, - stringIndexedFields, prefixIndexedFields []string) (db CdrStorage, err error) { - switch dbType { - case utils.POSTGRES: - db, err = NewPostgresStorage(host, port, name, user, pass, sslmode, maxConn, maxIdleConn, connMaxLifetime) - case utils.MYSQL: - db, err = NewMySQLStorage(host, port, name, user, pass, maxConn, maxIdleConn, connMaxLifetime) - case utils.MONGO: - db, err = NewMongoStorage(host, port, name, user, pass, utils.StorDB, stringIndexedFields, false) - case utils.INTERNAL: - db = NewInternalDB(stringIndexedFields, prefixIndexedFields) - default: - err = fmt.Errorf("unknown db '%s' valid options are [%s, %s, %s, %s]", - dbType, utils.MYSQL, utils.MONGO, utils.POSTGRES, utils.INTERNAL) - } - return -} - -// Stores one Cost coming from SM +// SMCost stores one Cost coming from SM type SMCost struct { CGRID string RunID string diff --git a/services/rals.go b/services/rals.go index 35e203faa..fb0b2043d 100644 --- a/services/rals.go +++ b/services/rals.go @@ -70,6 +70,7 @@ func (rals *RalService) Start() (err error) { return fmt.Errorf("service aleady running") } + engine.SetRpSubjectPrefixMatching(rals.cfg.RalsCfg().RpSubjectPrefixMatching) rals.Lock() defer rals.Unlock() @@ -115,6 +116,7 @@ func (rals *RalService) GetIntenternalChan() (conn chan rpcclient.RpcClientConne // Reload handles the change of config func (rals *RalService) Reload() (err error) { + engine.SetRpSubjectPrefixMatching(rals.cfg.RalsCfg().RpSubjectPrefixMatching) if err = rals.apiv1.Reload(); err != nil { return }