From e77d24f356a8916e24569d2459ed3711457ad86f Mon Sep 17 00:00:00 2001 From: DanB Date: Sun, 4 Mar 2018 11:46:01 +0100 Subject: [PATCH] DataManager RemoveReverseIndexes using cacheID and itemIDPrefix --- apier/v1/filter_indexes.go | 45 ++++++++++++++++++++++++++++++++++ engine/datamanager.go | 4 +-- engine/filterindexer.go | 26 -------------------- engine/storage_interface.go | 2 +- engine/storage_map.go | 4 +-- engine/storage_mongo_datadb.go | 4 +-- engine/storage_redis.go | 5 ++-- 7 files changed, 55 insertions(+), 35 deletions(-) diff --git a/apier/v1/filter_indexes.go b/apier/v1/filter_indexes.go index 8cccc7415..aef0f7ce4 100644 --- a/apier/v1/filter_indexes.go +++ b/apier/v1/filter_indexes.go @@ -439,9 +439,20 @@ func (self *ApierV1) computeThresholdIndexes(tenant string, thIDs *[]string, tra } } } +<<<<<<< HEAD if transactionID == utils.NonTransactional { if err := thdsIndexers.StoreIndexes(true, transactionID); err != nil { return nil, err +======= + if thIDs == nil { + if err := self.DataManager.RemoveFilterIndexes(utils.PrefixToIndexCache[utils.ThresholdProfilePrefix], + tenant); err != nil { + return err + } + if err := self.DataManager.RemoveFilterReverseIndexes(utils.PrefixToIndexCache[utils.ThresholdProfilePrefix], + tenant); err != nil { + return err +>>>>>>> DataManager RemoveReverseIndexes using cacheID and itemIDPrefix } return nil, nil } else { @@ -514,9 +525,20 @@ func (self *ApierV1) computeAttributeIndexes(tenant string, attrIDs *[]string, t } } } +<<<<<<< HEAD if transactionID == utils.NonTransactional { if err := attrIndexers.StoreIndexes(true, transactionID); err != nil { return nil, err +======= + if attrIDs == nil { + if err := self.DataManager.RemoveFilterIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix], + tenant); err != nil { + return err + } + if err := self.DataManager.RemoveFilterReverseIndexes(utils.PrefixToIndexCache[utils.AttributeProfilePrefix], + tenant); err != nil { + return err +>>>>>>> DataManager RemoveReverseIndexes using cacheID and itemIDPrefix } return nil, nil } else { @@ -589,9 +611,20 @@ func (self *ApierV1) computeResourceIndexes(tenant string, rsIDs *[]string, tran } } } +<<<<<<< HEAD if transactionID == utils.NonTransactional { if err := rpIndexers.StoreIndexes(true, transactionID); err != nil { return nil, err +======= + if rsIDs == nil { + if err := self.DataManager.RemoveFilterIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix], + tenant); err != nil { + return err + } + if err := self.DataManager.RemoveFilterReverseIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix], + tenant); err != nil { + return err +>>>>>>> DataManager RemoveReverseIndexes using cacheID and itemIDPrefix } return nil, nil } else { @@ -664,9 +697,20 @@ func (self *ApierV1) computeStatIndexes(tenant string, stIDs *[]string, transact } } } +<<<<<<< HEAD if transactionID == utils.NonTransactional { if err := sqpIndexers.StoreIndexes(true, transactionID); err != nil { return nil, err +======= + if stIDs == nil { + if err := self.DataManager.RemoveFilterIndexes(utils.PrefixToIndexCache[utils.StatQueueProfilePrefix], + tenant); err != nil { + return err + } + if err := self.DataManager.RemoveFilterReverseIndexes(utils.PrefixToIndexCache[utils.StatQueueProfilePrefix], + tenant); err != nil { + return err +>>>>>>> DataManager RemoveReverseIndexes using cacheID and itemIDPrefix } return nil, nil } else { @@ -739,6 +783,7 @@ func (self *ApierV1) computeSupplierIndexes(tenant string, sppIDs *[]string, tra } } } +<<<<<<< HEAD if transactionID == utils.NonTransactional { if err := sppIndexers.StoreIndexes(true, transactionID); err != nil { return nil, err diff --git a/engine/datamanager.go b/engine/datamanager.go index fe281e1cf..2cca29b4e 100644 --- a/engine/datamanager.go +++ b/engine/datamanager.go @@ -1133,8 +1133,8 @@ func (dm *DataManager) SetFilterReverseIndexes(cacheID, itemIDPrefix string, itemIDPrefix, indexes, commit, transactionID) } -func (dm *DataManager) RemoveFilterReverseIndexes(dbKey string) (err error) { - return dm.DataDB().RemoveFilterReverseIndexesDrv(dbKey) +func (dm *DataManager) RemoveFilterReverseIndexes(cacheID, itemIDPrefix string) (err error) { + return dm.DataDB().RemoveFilterReverseIndexesDrv(cacheID, itemIDPrefix) } func (dm *DataManager) MatchFilterIndex(cacheID, itemIDPrefix, diff --git a/engine/filterindexer.go b/engine/filterindexer.go index 17dc888e7..39976b92c 100644 --- a/engine/filterindexer.go +++ b/engine/filterindexer.go @@ -207,29 +207,3 @@ func (rfi *FilterIndexer) RemoveItemFromIndex(itemID string) (err error) { } return } - -//GetDBIndexKey return the dbKey for an specific item -func GetDBIndexKey(itemType, dbKeySuffix string, reverse bool) (dbKey string) { - var idxPrefix, rIdxPrefix string - switch itemType { - case utils.ThresholdProfilePrefix: - idxPrefix = utils.ThresholdFilterIndexes - rIdxPrefix = utils.ThresholdFilterRevIndexes - case utils.ResourceProfilesPrefix: - idxPrefix = utils.ResourceFilterIndexes - rIdxPrefix = utils.ResourceFilterRevIndexes - case utils.StatQueueProfilePrefix: - idxPrefix = utils.StatFilterIndexes - rIdxPrefix = utils.StatFilterRevIndexes - case utils.SupplierProfilePrefix: - idxPrefix = utils.SupplierFilterIndexes - rIdxPrefix = utils.SupplierFilterRevIndexes - case utils.AttributeProfilePrefix: - idxPrefix = utils.AttributeFilterIndexes - rIdxPrefix = utils.AttributeFilterRevIndexes - } - if reverse { - return rIdxPrefix + dbKeySuffix - } - return idxPrefix + dbKeySuffix -} diff --git a/engine/storage_interface.go b/engine/storage_interface.go index adff793d8..b88ee1ac5 100755 --- a/engine/storage_interface.go +++ b/engine/storage_interface.go @@ -127,7 +127,7 @@ type DataDB interface { fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) SetFilterReverseIndexesDrv(cacheID, itemIDPrefix string, indexes map[string]utils.StringMap, commit bool, transactionID string) (err error) - RemoveFilterReverseIndexesDrv(dbKey string) (err error) + RemoveFilterReverseIndexesDrv(cacheID, itemIDPrefix string) (err error) MatchFilterIndexDrv(cacheID, itemIDPrefix, filterType, fieldName, fieldVal string) (itemIDs utils.StringMap, err error) GetStatQueueProfileDrv(tenant string, ID string) (sq *StatQueueProfile, err error) diff --git a/engine/storage_map.go b/engine/storage_map.go index f9248c32c..e9823e492 100755 --- a/engine/storage_map.go +++ b/engine/storage_map.go @@ -1376,10 +1376,10 @@ func (ms *MapStorage) SetFilterReverseIndexesDrv(cacheID, itemIDPrefix string, } //RemoveFilterReverseIndexesDrv removes ReverseIndexes for a specific itemID -func (ms *MapStorage) RemoveFilterReverseIndexesDrv(dbKey string) (err error) { +func (ms *MapStorage) RemoveFilterReverseIndexesDrv(cacheID, itemIDPrefix string) (err error) { ms.mu.Lock() defer ms.mu.Unlock() - delete(ms.dict, dbKey) + delete(ms.dict, utils.CacheInstanceToPrefix[cacheID]+itemIDPrefix) return } diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index 4be8fd4ba..250925ed7 100755 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -2130,10 +2130,10 @@ func (ms *MongoStorage) SetFilterReverseIndexesDrv(cacheID, itemIDPrefix string, } //RemoveFilterReverseIndexesDrv removes ReverseIndexes for a specific itemID -func (ms *MongoStorage) RemoveFilterReverseIndexesDrv(dbKey string) (err error) { +func (ms *MongoStorage) RemoveFilterReverseIndexesDrv(cacheID, itemIDPrefix string) (err error) { session, col := ms.conn(colRFI) defer session.Close() - err = col.Remove(bson.M{"key": dbKey}) + err = col.Remove(bson.M{"key": utils.CacheInstanceToPrefix[cacheID] + itemIDPrefix}) //redis compatibility if err == mgo.ErrNotFound { err = nil diff --git a/engine/storage_redis.go b/engine/storage_redis.go index 8687a2fd3..0eeaf4acb 100755 --- a/engine/storage_redis.go +++ b/engine/storage_redis.go @@ -1521,8 +1521,9 @@ func (rs *RedisStorage) SetFilterReverseIndexesDrv(cacheID, itemIDPrefix string, } //RemoveFilterReverseIndexesDrv removes ReverseIndexes for a specific itemID -func (rs *RedisStorage) RemoveFilterReverseIndexesDrv(dbKey string) (err error) { - return rs.Cmd("DEL", dbKey).Err +func (rs *RedisStorage) RemoveFilterReverseIndexesDrv(cacheID, + itemIDPrefix string) (err error) { + return rs.Cmd("DEL", utils.CacheInstanceToPrefix[cacheID]+itemIDPrefix).Err } func (rs *RedisStorage) MatchFilterIndexDrv(cacheID, itemIDPrefix,