mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-14 20:59:53 +05:00
Updated Filter indexes update
This commit is contained in:
committed by
Dan Christian Bogos
parent
15d08f458c
commit
419bb48571
@@ -226,7 +226,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexes(args *utils.ArgsComputeFilterInde
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
}
|
||||
@@ -243,7 +243,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexes(args *utils.ArgsComputeFilterInde
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
}
|
||||
@@ -260,7 +260,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexes(args *utils.ArgsComputeFilterInde
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
}
|
||||
@@ -277,7 +277,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexes(args *utils.ArgsComputeFilterInde
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
}
|
||||
@@ -298,7 +298,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexes(args *utils.ArgsComputeFilterInde
|
||||
}
|
||||
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
}
|
||||
@@ -315,7 +315,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexes(args *utils.ArgsComputeFilterInde
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
}
|
||||
@@ -335,7 +335,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexes(args *utils.ArgsComputeFilterInde
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
}
|
||||
@@ -410,7 +410,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexIDs(args *utils.ArgsComputeFilterInd
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
//StatQueueProfile Indexes
|
||||
@@ -425,7 +425,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexIDs(args *utils.ArgsComputeFilterInd
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
//ResourceProfile Indexes
|
||||
@@ -440,7 +440,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexIDs(args *utils.ArgsComputeFilterInd
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
//RouteProfile Indexes
|
||||
@@ -455,7 +455,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexIDs(args *utils.ArgsComputeFilterInd
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
//AttributeProfile Indexes
|
||||
@@ -473,7 +473,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexIDs(args *utils.ArgsComputeFilterInd
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
//ChargerProfile Indexes
|
||||
@@ -488,7 +488,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexIDs(args *utils.ArgsComputeFilterInd
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
//DispatcherProfile Indexes
|
||||
@@ -506,7 +506,7 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexIDs(args *utils.ArgsComputeFilterInd
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, nil); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
*reply = utils.OK
|
||||
|
||||
@@ -33,7 +33,7 @@ var (
|
||||
|
||||
// newFilterIndex will get the index from DataManager if is not found it will create it
|
||||
// is used to update the mentioned index
|
||||
func newFilterIndex(dm *DataManager, idxItmType, tnt, ctx, itemID string, filterIDs []string) (indexes map[string]utils.StringSet, err error) {
|
||||
func newFilterIndex(dm *DataManager, idxItmType, tnt, ctx, itemID string, filterIDs []string, newFlt *Filter) (indexes map[string]utils.StringSet, err error) {
|
||||
tntCtx := tnt
|
||||
if ctx != utils.EmptyString {
|
||||
tntCtx = utils.ConcatenatedKey(tnt, ctx)
|
||||
@@ -61,7 +61,9 @@ func newFilterIndex(dm *DataManager, idxItmType, tnt, ctx, itemID string, filter
|
||||
// we try to get them from Cache/DataDB or if not found in this location we create them here
|
||||
for _, fltrID := range filterIDs {
|
||||
var fltr *Filter
|
||||
if fltr, err = dm.GetFilter(tnt, fltrID,
|
||||
if newFlt != nil && newFlt.Tenant == tnt && newFlt.ID == fltrID {
|
||||
fltr = newFlt
|
||||
} else if fltr, err = dm.GetFilter(tnt, fltrID,
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
err = fmt.Errorf("broken reference to filter: %+v for itemType: %+v and ID: %+v",
|
||||
@@ -121,7 +123,7 @@ func addItemToFilterIndex(dm *DataManager, idxItmType, tnt, ctx, itemID string,
|
||||
defer guardian.Guardian.UnguardIDs(refID)
|
||||
|
||||
var indexes map[string]utils.StringSet
|
||||
if indexes, err = newFilterIndex(dm, idxItmType, tnt, ctx, itemID, filterIDs); err != nil {
|
||||
if indexes, err = newFilterIndex(dm, idxItmType, tnt, ctx, itemID, filterIDs, nil); err != nil {
|
||||
return
|
||||
}
|
||||
// in case we have a profile with only non indexable filters(e.g. only *gt)
|
||||
@@ -152,7 +154,7 @@ func removeItemFromFilterIndex(dm *DataManager, idxItmType, tnt, ctx, itemID str
|
||||
defer guardian.Guardian.UnguardIDs(refID)
|
||||
|
||||
var indexes map[string]utils.StringSet
|
||||
if indexes, err = newFilterIndex(dm, idxItmType, tnt, ctx, itemID, filterIDs); err != nil {
|
||||
if indexes, err = newFilterIndex(dm, idxItmType, tnt, ctx, itemID, filterIDs, nil); err != nil {
|
||||
return
|
||||
}
|
||||
if len(indexes) == 0 { // in case we have a profile with only non indexable filters(e.g. only *gt)
|
||||
@@ -381,7 +383,7 @@ func splitFilterIndex(tntCtxIdxKey string) (tntCtx, idxKey string, err error) {
|
||||
// ComputeIndexes gets the indexes from the DB and ensure that the items are indexed
|
||||
// getFilters returns a list of filters IDs for the given profile id
|
||||
func ComputeIndexes(dm *DataManager, tnt, ctx, idxItmType string, IDs *[]string,
|
||||
transactionID string, getFilters func(tnt, id, ctx string) (*[]string, error)) (processed bool, err error) {
|
||||
transactionID string, getFilters func(tnt, id, ctx string) (*[]string, error), newFltr *Filter) (processed bool, err error) {
|
||||
var profilesIDs []string
|
||||
if IDs == nil { // get all items
|
||||
var ids []string
|
||||
@@ -413,7 +415,7 @@ func ComputeIndexes(dm *DataManager, tnt, ctx, idxItmType string, IDs *[]string,
|
||||
}
|
||||
var index map[string]utils.StringSet
|
||||
if index, err = newFilterIndex(dm, idxItmType,
|
||||
tnt, ctx, id, *filterIDs); err != nil {
|
||||
tnt, ctx, id, *filterIDs, newFltr); err != nil {
|
||||
return
|
||||
}
|
||||
// ensure that the item is in the index set
|
||||
@@ -607,7 +609,7 @@ func UpdateFilterIndex(dm *DataManager, oldFlt, newFlt *Filter) (err error) {
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, newFlt); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
case utils.CacheStatFilterIndexes:
|
||||
@@ -627,7 +629,7 @@ func UpdateFilterIndex(dm *DataManager, oldFlt, newFlt *Filter) (err error) {
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, newFlt); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
case utils.CacheResourceFilterIndexes:
|
||||
@@ -647,7 +649,7 @@ func UpdateFilterIndex(dm *DataManager, oldFlt, newFlt *Filter) (err error) {
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, newFlt); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
case utils.CacheRouteFilterIndexes:
|
||||
@@ -667,7 +669,7 @@ func UpdateFilterIndex(dm *DataManager, oldFlt, newFlt *Filter) (err error) {
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, newFlt); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
case utils.CacheChargerFilterIndexes:
|
||||
@@ -687,7 +689,7 @@ func UpdateFilterIndex(dm *DataManager, oldFlt, newFlt *Filter) (err error) {
|
||||
fltrIDs[i] = fltrID
|
||||
}
|
||||
return &fltrIDs, nil
|
||||
}); err != nil && err != utils.ErrNotFound {
|
||||
}, newFlt); err != nil && err != utils.ErrNotFound {
|
||||
return utils.APIErrorHandler(err)
|
||||
}
|
||||
case utils.CacheAttributeFilterIndexes:
|
||||
@@ -708,7 +710,7 @@ func UpdateFilterIndex(dm *DataManager, oldFlt, newFlt *Filter) (err error) {
|
||||
config.CgrConfig().GeneralCfg().LockingTimeout, idxItmType+tntCtx)
|
||||
var updIdx map[string]utils.StringSet
|
||||
if updIdx, err = newFilterIndex(dm, idxItmType,
|
||||
newFlt.Tenant, ctx, itemID, ap.FilterIDs); err != nil {
|
||||
newFlt.Tenant, ctx, itemID, ap.FilterIDs, newFlt); err != nil {
|
||||
guardian.Guardian.UnguardIDs(refID)
|
||||
return
|
||||
}
|
||||
@@ -741,7 +743,7 @@ func UpdateFilterIndex(dm *DataManager, oldFlt, newFlt *Filter) (err error) {
|
||||
config.CgrConfig().GeneralCfg().LockingTimeout, idxItmType+tntCtx)
|
||||
var updIdx map[string]utils.StringSet
|
||||
if updIdx, err = newFilterIndex(dm, idxItmType,
|
||||
newFlt.Tenant, ctx, itemID, dp.FilterIDs); err != nil {
|
||||
newFlt.Tenant, ctx, itemID, dp.FilterIDs, newFlt); err != nil {
|
||||
guardian.Guardian.UnguardIDs(refID)
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user