Add Filter in Cache

This commit is contained in:
TeoV
2017-10-25 17:39:26 +03:00
committed by Dan Christian Bogos
parent 383d0f3257
commit ff92d3f5a4
27 changed files with 115 additions and 45 deletions

View File

@@ -38,7 +38,7 @@ func (dm *DataManager) DataDB() DataDB {
return dm.dataDB
}
func (dm *DataManager) LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aaPlIDs, atrgIDs, sgIDs, lcrIDs, dcIDs, alsIDs, rvAlsIDs, rpIDs, resIDs, stqIDs, stqpIDs, thIDs, thpIDs []string) (err error) {
func (dm *DataManager) LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs, aplIDs, aaPlIDs, atrgIDs, sgIDs, lcrIDs, dcIDs, alsIDs, rvAlsIDs, rpIDs, resIDs, stqIDs, stqpIDs, thIDs, thpIDs, fltrIDs []string) (err error) {
if dm.DataDB().GetStorageType() == utils.MAPSTOR {
if dm.cacheCfg == nil {
return
@@ -49,7 +49,7 @@ func (dm *DataManager) LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs,
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, utils.ALIASES_PREFIX, utils.REVERSE_ALIASES_PREFIX, utils.StatQueuePrefix, utils.StatQueueProfilePrefix,
utils.ThresholdPrefix, utils.ThresholdProfilePrefix}, k) && cacheCfg.Precache {
utils.ThresholdPrefix, utils.ThresholdProfilePrefix, utils.FilterPrefix}, k) && cacheCfg.Precache {
if err := dm.PreloadCacheForPrefix(k); err != nil && err != utils.ErrInvalidKey {
return err
}
@@ -77,6 +77,7 @@ func (dm *DataManager) LoadDataDBCache(dstIDs, rvDstIDs, rplIDs, rpfIDs, actIDs,
utils.StatQueueProfilePrefix: stqpIDs,
utils.ThresholdPrefix: thIDs,
utils.ThresholdProfilePrefix: thpIDs,
utils.FilterPrefix: fltrIDs,
} {
if err = dm.CacheDataFromDB(key, ids, false); err != nil {
return
@@ -132,7 +133,8 @@ func (dm *DataManager) CacheDataFromDB(prfx string, ids []string, mustBeCached b
utils.StatQueuePrefix,
utils.StatQueueProfilePrefix,
utils.ThresholdPrefix,
utils.ThresholdProfilePrefix}, prfx) {
utils.ThresholdProfilePrefix,
utils.FilterPrefix}, prfx) {
return utils.NewCGRError(utils.MONGO,
utils.MandatoryIEMissingCaps,
utils.UnsupportedCachePrefix,
@@ -285,9 +287,6 @@ func (dm *DataManager) GetFilter(tenant, id string, skipCache bool, transactionI
}
return nil, err
}
if err = fltr.Compile(); err != nil {
return
}
cache.Set(key, fltr, cacheCommit(transactionID), transactionID)
return
}

View File

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

View File

@@ -346,9 +346,11 @@ func init() {
if err := csvr.LoadAliases(); err != nil {
log.Print("error in LoadAliases:", err)
}
if err := csvr.LoadFilters(); err != nil {
log.Print("error in LoadFilter:", err)
}
if err := csvr.LoadResourceProfiles(); err != nil {
log.Print("error in LoadResourceProfiles:", err)
}
if err := csvr.LoadStats(); err != nil {
log.Print("error in LoadStats:", err)
@@ -356,12 +358,9 @@ func init() {
if err := csvr.LoadThresholds(); err != nil {
log.Print("error in LoadThresholds:", err)
}
if err := csvr.LoadFilters(); err != nil {
log.Print("error in LoadFilter:", err)
}
csvr.WriteToDatabase(false, false, false)
cache.Flush()
dm.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
dm.LoadDataDBCache(nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
}
func TestLoadDestinations(t *testing.T) {

View File

@@ -694,7 +694,7 @@ func (csvs *CSVStorage) GetTPFilters(tpid, id string) ([]*utils.TPFilter, error)
return nil, err
}
if filterCfg, err := csvLoad(TpFilter{}, record); err != nil {
log.Print("error loading TPThreshold: ", err)
log.Print("error loading TPFilter: ", err)
return nil, err
} else {
fIlterCfg := filterCfg.(TpFilter)

View File

@@ -1363,6 +1363,14 @@ func (ms *MapStorage) GetFilterDrv(tenant, id string) (r *Filter, err error) {
return nil, utils.ErrNotFound
}
err = ms.ms.Unmarshal(values, &r)
if err != nil {
return nil, err
}
for _, fltr := range r.RequestFilters {
if err := fltr.CompileValues(); err != nil {
return nil, err
}
}
return
}

View File

@@ -1952,6 +1952,11 @@ func (ms *MongoStorage) GetFilterDrv(tenant, id string) (r *Filter, err error) {
}
return nil, err
}
for _, fltr := range r.RequestFilters {
if err = fltr.CompileValues(); err != nil {
return
}
}
return
}

View File

@@ -1510,6 +1510,11 @@ func (rs *RedisStorage) GetFilterDrv(tenant, id string) (r *Filter, err error) {
if err = rs.ms.Unmarshal(values, &r); err != nil {
return
}
for _, fltr := range r.RequestFilters {
if err = fltr.CompileValues(); err != nil {
return
}
}
return
}

View File

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