Merge LoadRatingCache and LoadAccountingCache into LoadDataDBCache

This commit is contained in:
TeoV
2017-09-07 05:43:33 -04:00
parent fb81b72570
commit 02d9b539bd
18 changed files with 28 additions and 84 deletions

View File

@@ -1034,10 +1034,7 @@ func (self *ApierV1) LoadCache(args utils.AttrReloadCache, reply *string) (err e
resIDs = *args.ResourceIDs
}
if err := self.DataDB.LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aapIDs, atrgIDs, sgIDs, lcrIDs, dcIDs); err != nil {
return utils.NewErrServerError(err)
}
if err := self.DataDB.LoadAccountingCache(alsIDs, rvAlsIDs, rspIDs, resIDs); err != nil {
if err := self.DataDB.LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aapIDs, atrgIDs, sgIDs, lcrIDs, dcIDs, alsIDs, rvAlsIDs, rspIDs, resIDs); err != nil {
return utils.NewErrServerError(err)
}
*reply = utils.OK

View File

@@ -90,16 +90,11 @@ func startRater(internalRaterChan chan rpcclient.RpcClientConnection, cacheDoneC
}
// ToDo: Add here timings
if err := dataDB.LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aapIDs, atrgIDs, sgIDs, lcrIDs, dcIDs); err != nil {
if err := dataDB.LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aapIDs, atrgIDs, sgIDs, lcrIDs, dcIDs, alsIDs, rvAlsIDs, rspIDs, resIDs); err != nil {
utils.Logger.Crit(fmt.Sprintf("<RALs> Cache rating error: %s", err.Error()))
exitChan <- true
return
}
if err := dataDB.LoadAccountingCache(alsIDs, rvAlsIDs, rspIDs, resIDs); err != nil {
utils.Logger.Crit(fmt.Sprintf("<RALs> Cache accounting error: %s", err.Error()))
exitChan <- true
return
}
cacheDoneChan <- struct{}{}
}()

View File

@@ -65,12 +65,9 @@ func durInternalRater(cd *engine.CallDescriptor) (time.Duration, error) {
}
defer dataDb.Close()
engine.SetDataStorage(dataDb)
if err := dataDb.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil); err != nil {
if err := dataDb.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil); err != nil {
return nilDuration, fmt.Errorf("Cache rating error: %s", err.Error())
}
if err := dataDb.LoadAccountingCache(nil, nil, nil, nil); err != nil {
return nilDuration, fmt.Errorf("Cache accounting error: %s", err.Error())
}
log.Printf("Runnning %d cycles...", *runs)
var result *engine.CallCost
j := 0

View File

@@ -40,7 +40,7 @@ func InitDataDb(cfg *config.CGRConfig) error {
if err := dataDB.Flush(""); err != nil {
return err
}
dataDB.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dataDB.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
CheckVersion(dataDB) // Write version before starting
return nil
}

View File

@@ -348,8 +348,7 @@ func init() {
}
csvr.WriteToDatabase(false, false, false)
cache.Flush()
dataStorage.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dataStorage.LoadAccountingCache(nil, nil, nil, nil)
dataStorage.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
}
func TestLoadDestinations(t *testing.T) {

View File

@@ -45,7 +45,7 @@ type DataDB interface {
Storage
Marshaler() Marshaler
HasData(string, string) (bool, error)
LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aapIDs, atrgIDs, sgIDs, lcrIDs, dcIDs []string) error
LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aapIDs, atrgIDs, sgIDs, lcrIDs, dcIDs, alsIDs, rvAlsIDs, rlIDs, resIDs []string) error
GetRatingPlan(string, bool, string) (*RatingPlan, error)
SetRatingPlan(*RatingPlan, string) error
GetRatingProfile(string, bool, string) (*RatingProfile, error)
@@ -80,7 +80,6 @@ type DataDB interface {
RemAccountActionPlans(acntID string, apIDs []string) (err error)
PushTask(*Task) error
PopTask() (*Task, error)
LoadAccountingCache(alsIDs, rvAlsIDs, rspIDs, resIDs []string) error
GetAccount(string) (*Account, error)
SetAccount(*Account) error
RemoveAccount(string) error

View File

@@ -146,7 +146,7 @@ func (ms *MapStorage) RebuildReverseForPrefix(prefix string) error {
return nil
}
func (ms *MapStorage) LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aapIDs, atrgIDs, sgIDs, lcrIDs, dcIDs []string) (err error) {
func (ms *MapStorage) LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aapIDs, atrgIDs, sgIDs, lcrIDs, dcIDs, alsIDs, rvAlsIDs, rlIDs, resIDs []string) (err error) {
if ms.cacheCfg == nil {
return
}
@@ -155,7 +155,7 @@ func (ms *MapStorage) LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs,
if utils.IsSliceMember([]string{utils.DESTINATION_PREFIX, utils.REVERSE_DESTINATION_PREFIX,
utils.RATING_PLAN_PREFIX, utils.RATING_PROFILE_PREFIX, utils.LCR_PREFIX, utils.CDR_STATS_PREFIX,
utils.ACTION_PREFIX, utils.ACTION_PLAN_PREFIX, utils.ACTION_TRIGGER_PREFIX,
utils.SHARED_GROUP_PREFIX}, k) && cacheCfg.Precache {
utils.SHARED_GROUP_PREFIX, utils.ALIASES_PREFIX, utils.REVERSE_ALIASES_PREFIX}, k) && cacheCfg.Precache {
if err := ms.PreloadCacheForPrefix(k); err != nil && err != utils.ErrInvalidKey {
return err
}
@@ -165,21 +165,6 @@ func (ms *MapStorage) LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs,
return
}
func (ms *MapStorage) LoadAccountingCache(alsIDs, rvAlsIDs, rlIDs, resIDs []string) error {
if ms.cacheCfg == nil {
return nil
}
for k, cacheCfg := range ms.cacheCfg {
k = utils.CacheInstanceToPrefix[k] // alias into prefixes understood by storage
if utils.IsSliceMember([]string{utils.ALIASES_PREFIX, utils.REVERSE_ALIASES_PREFIX}, k) && cacheCfg.Precache {
if err := ms.PreloadCacheForPrefix(k); err != nil && err != utils.ErrInvalidKey {
return err
}
}
}
return nil
}
func (ms *MapStorage) PreloadCacheForPrefix(prefix string) error {
transID := cache.BeginTransaction()
cache.RemPrefixKey(prefix, false, transID)

View File

@@ -417,7 +417,7 @@ func (ms *MongoStorage) RebuildReverseForPrefix(prefix string) (err error) {
return nil
}
func (ms *MongoStorage) LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aaPlIDs, atrgIDs, sgIDs, lcrIDs, dcIDs []string) (err error) {
func (ms *MongoStorage) LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aaPlIDs, atrgIDs, sgIDs, lcrIDs, dcIDs, alsIDs, rvAlsIDs, rpIDs, resIDs []string) (err error) {
for key, ids := range map[string][]string{
utils.DESTINATION_PREFIX: dstIDs,
utils.REVERSE_DESTINATION_PREFIX: rvDstIDs,
@@ -430,20 +430,10 @@ func (ms *MongoStorage) LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs
utils.SHARED_GROUP_PREFIX: sgIDs,
utils.LCR_PREFIX: lcrIDs,
utils.DERIVEDCHARGERS_PREFIX: dcIDs,
} {
if err = ms.CacheDataFromDB(key, ids, false); err != nil {
return
}
}
return
}
func (ms *MongoStorage) LoadAccountingCache(alsIDs, rvAlsIDs, rpIDs, resIDs []string) (err error) {
for key, ids := range map[string][]string{
utils.ALIASES_PREFIX: alsIDs,
utils.REVERSE_ALIASES_PREFIX: rvAlsIDs,
utils.ResourceProfilesPrefix: rpIDs,
utils.ResourcesPrefix: resIDs,
utils.ALIASES_PREFIX: alsIDs,
utils.REVERSE_ALIASES_PREFIX: rvAlsIDs,
utils.ResourceProfilesPrefix: rpIDs,
utils.ResourcesPrefix: resIDs,
} {
if err = ms.CacheDataFromDB(key, ids, false); err != nil {
return

View File

@@ -118,8 +118,8 @@ func (rs *RedisStorage) SelectDatabase(dbName string) (err error) {
return rs.Cmd("SELECT", dbName).Err
}
func (rs *RedisStorage) LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs,
aplIDs, aaPlIDs, atrgIDs, sgIDs, lcrIDs, dcIDs []string) (err error) {
func (rs *RedisStorage) LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs,
aplIDs, aaPlIDs, atrgIDs, sgIDs, lcrIDs, dcIDs, alsIDs, rvAlsIDs, rpIDs, resIDs []string) (err error) {
for key, ids := range map[string][]string{
utils.DESTINATION_PREFIX: dstIDs,
utils.REVERSE_DESTINATION_PREFIX: rvDstIDs,
@@ -132,20 +132,10 @@ func (rs *RedisStorage) LoadRatingCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs
utils.SHARED_GROUP_PREFIX: sgIDs,
utils.LCR_PREFIX: lcrIDs,
utils.DERIVEDCHARGERS_PREFIX: dcIDs,
} {
if err = rs.CacheDataFromDB(key, ids, false); err != nil {
return
}
}
return
}
func (rs *RedisStorage) LoadAccountingCache(alsIDs, rvAlsIDs, rpIDs, resIDs []string) (err error) {
for key, ids := range map[string][]string{
utils.ALIASES_PREFIX: alsIDs,
utils.REVERSE_ALIASES_PREFIX: rvAlsIDs,
utils.ResourceProfilesPrefix: rpIDs,
utils.ResourcesPrefix: resIDs,
utils.ALIASES_PREFIX: alsIDs,
utils.REVERSE_ALIASES_PREFIX: rvAlsIDs,
utils.ResourceProfilesPrefix: rpIDs,
utils.ResourcesPrefix: resIDs,
} {
if err = rs.CacheDataFromDB(key, ids, false); err != nil {
return

View File

@@ -102,7 +102,7 @@ func TestStorageCacheRefresh(t *testing.T) {
dataStorage.GetDestination("T11", false, utils.NonTransactional)
dataStorage.SetDestination(&Destination{"T11", []string{"1"}}, utils.NonTransactional)
t.Log("Test cache refresh")
err := dataStorage.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
err := dataStorage.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
if err != nil {
t.Error("Error cache rating: ", err)
}

View File

@@ -63,8 +63,7 @@ ENABLE_ACNT,*enable_account,,,,,,,,,,,,,,false,false,10`
csvr.WriteToDatabase(false, false, false)
cache.Flush()
dbAcntActs.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dbAcntActs.LoadAccountingCache(nil, nil, nil, nil)
dbAcntActs.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
expectAcnt := &engine.Account{ID: "cgrates.org:1"}
if acnt, err := dbAcntActs.GetAccount("cgrates.org:1"); err != nil {

View File

@@ -75,8 +75,7 @@ RP_ANY,DR_ANY_1CNT,*any,10`
}
cache.Flush()
dbAuth.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dbAuth.LoadAccountingCache(nil, nil, nil, nil)
dbAuth.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
if cachedDests := cache.CountEntries(utils.DESTINATION_PREFIX); cachedDests != 0 {
t.Error("Wrong number of cached destinations found", cachedDests)

View File

@@ -73,8 +73,7 @@ RP_SMS1,DR_SMS_1,ALWAYS,10`
}
csvr.WriteToDatabase(false, false, false)
cache.Flush()
dataDB.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dataDB.LoadAccountingCache(nil, nil, nil, nil)
dataDB.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
if cachedRPlans := cache.CountEntries(utils.RATING_PLAN_PREFIX); cachedRPlans != 3 {
t.Error("Wrong number of cached rating plans found", cachedRPlans)

View File

@@ -60,8 +60,7 @@ RP_DATA1,DR_DATA_2,TM2,10`
}
csvr.WriteToDatabase(false, false, false)
cache.Flush()
dataDB.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dataDB.LoadAccountingCache(nil, nil, nil, nil)
dataDB.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
if cachedRPlans := cache.CountEntries(utils.RATING_PLAN_PREFIX); cachedRPlans != 1 {
t.Error("Wrong number of cached rating plans found", cachedRPlans)

View File

@@ -110,8 +110,7 @@ TOPUP10_AT,TOPUP10_AC1,ASAP,10`
t.Error("No account saved")
}
cache.Flush()
dataDB.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dataDB.LoadAccountingCache(nil, nil, nil, nil)
dataDB.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
if cachedDests := cache.CountEntries(utils.DESTINATION_PREFIX); cachedDests != 0 {
t.Error("Wrong number of cached destinations found", cachedDests)

View File

@@ -110,8 +110,7 @@ TOPUP10_AT,TOPUP10_AC1,ASAP,10`
t.Error("No account saved")
}
cache.Flush()
dataDB2.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dataDB2.LoadAccountingCache(nil, nil, nil, nil)
dataDB2.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
if cachedDests := cache.CountEntries(utils.DESTINATION_PREFIX); cachedDests != 0 {
t.Error("Wrong number of cached destinations found", cachedDests)

View File

@@ -108,8 +108,7 @@ RP_UK,DR_UK_Mobile_BIG5,ALWAYS,10`
t.Error("No account saved")
}
cache.Flush()
dataDB3.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dataDB3.LoadAccountingCache(nil, nil, nil, nil)
dataDB3.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
if cachedDests := cache.CountEntries(utils.DESTINATION_PREFIX); cachedDests != 0 {
t.Error("Wrong number of cached destinations found", cachedDests)

View File

@@ -58,8 +58,7 @@ func TestSMSLoadCsvTpSmsChrg1(t *testing.T) {
}
csvr.WriteToDatabase(false, false, false)
cache.Flush()
dataDB.LoadRatingCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dataDB.LoadAccountingCache(nil, nil, nil, nil)
dataDB.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
if cachedRPlans := cache.CountEntries(utils.RATING_PLAN_PREFIX); cachedRPlans != 1 {
t.Error("Wrong number of cached rating plans found", cachedRPlans)