Added automatic cache reload for filter indexes

This commit is contained in:
Trial97
2020-08-28 13:50:00 +03:00
committed by Dan Christian Bogos
parent a271835a68
commit cd14ab0a2b
22 changed files with 237 additions and 266 deletions

View File

@@ -271,6 +271,19 @@ func (chS *CacheS) V1RemoveItem(args *utils.ArgsGetCacheItemWithOpts,
return
}
func (chS *CacheS) V1RemoveItems(args utils.AttrReloadCacheWithOpts,
reply *string) (err error) {
for key, ids := range args.ArgsCache {
if cacheID, has := utils.ArgCacheToInstance[key]; has {
for _, id := range ids {
chS.tCache.Remove(cacheID, id, true, utils.NonTransactional)
}
}
}
*reply = utils.OK
return
}
func (chS *CacheS) V1Clear(args *utils.AttrCacheIDsWithOpts,
reply *string) (err error) {
chS.tCache.Clear(args.CacheIDs)

View File

@@ -28,7 +28,7 @@ import (
)
var (
filterIndexTypes = utils.NewStringSet([]string{utils.MetaPrefix, utils.MetaString, utils.MetaSuffix})
FilterIndexTypes = utils.NewStringSet([]string{utils.MetaPrefix, utils.MetaString, utils.MetaSuffix})
)
// newFilterIndex will get the index from DataManager if is not found it will create it
@@ -67,7 +67,7 @@ func newFilterIndex(dm *DataManager, idxItmType, tnt, ctx, itemID string, filter
return
}
for _, flt := range fltr.Rules {
if !filterIndexTypes.Has(flt.Type) {
if !FilterIndexTypes.Has(flt.Type) {
continue
}
@@ -477,7 +477,7 @@ func UpdateFilterIndex(dm *DataManager, oldFlt, newFlt *Filter) (err error) {
newRules := utils.StringSet{} // we only need to determine if we added new rules to rebuild
removeRules := utils.StringSet{} // but we need to know what indexes to remove
for _, flt := range newFlt.Rules {
if !filterIndexTypes.Has(flt.Type) {
if !FilterIndexTypes.Has(flt.Type) {
continue
}
isDyn := strings.HasPrefix(flt.Element, utils.DynamicDataPrefix)
@@ -498,7 +498,7 @@ func UpdateFilterIndex(dm *DataManager, oldFlt, newFlt *Filter) (err error) {
}
}
for _, flt := range oldFlt.Rules {
if !filterIndexTypes.Has(flt.Type) {
if !FilterIndexTypes.Has(flt.Type) {
continue
}
isDyn := strings.HasPrefix(flt.Element, utils.DynamicDataPrefix)

View File

@@ -2479,7 +2479,7 @@ func (tpr *TpReader) ReloadCache(caching string, verbose bool, opts map[string]i
return
}
case utils.MetaRemove:
if err = connMgr.Call(tpr.cacheConns, nil, utils.CacheSv1RemoveItem, cacheArgs, &reply); err != nil {
if err = connMgr.Call(tpr.cacheConns, nil, utils.CacheSv1RemoveItems, cacheArgs, &reply); err != nil {
return
}
case utils.MetaClear:
@@ -2515,6 +2515,9 @@ func (tpr *TpReader) ReloadCache(caching string, verbose bool, opts map[string]i
cacheIDs = append(cacheIDs, utils.CacheRateProfilesFilterIndexes)
cacheIDs = append(cacheIDs, utils.CacheRateFilterIndexes)
}
if len(flrIDs) != 0 {
cacheIDs = append(cacheIDs, utils.CacheReverseFilterIndexes)
}
if verbose {
log.Print("Clearing indexes")
}