From 456c51244085757b9d3b04b98f80cbb85cefdad9 Mon Sep 17 00:00:00 2001 From: DanB Date: Fri, 2 Mar 2018 20:01:06 +0100 Subject: [PATCH] DataManager RemoveFilterIndexes and GetFilterReverseIndexes using cacheID and itemIDPrefix --- apier/v1/filter_indexes.go | 6 +++--- engine/attributes_test.go | 15 +++++---------- engine/datamanager.go | 9 +++++---- engine/filterindexer.go | 2 +- engine/storage_interface.go | 4 ++-- engine/storage_map.go | 7 ++++--- engine/storage_mongo_datadb.go | 7 ++++--- engine/storage_redis.go | 7 ++++--- 8 files changed, 28 insertions(+), 29 deletions(-) diff --git a/apier/v1/filter_indexes.go b/apier/v1/filter_indexes.go index f634a800e..8cccc7415 100644 --- a/apier/v1/filter_indexes.go +++ b/apier/v1/filter_indexes.go @@ -188,7 +188,7 @@ func (self *ApierV1) GetFilterReverseIndexes(arg AttrGetFilterReverseIndexes, re indexes = make(map[string]utils.StringMap) for _, itemID := range arg.ItemIDs { if tmpIndexes, err := self.DataManager.GetFilterReverseIndexes( - engine.GetDBIndexKey(arg.ItemType, key, true), map[string]string{itemID: ""}); err != nil { + utils.PrefixToRevIndexCache[arg.ItemType], key, map[string]string{itemID: ""}); err != nil { return err } else { for key, val := range tmpIndexes { @@ -199,7 +199,7 @@ func (self *ApierV1) GetFilterReverseIndexes(arg AttrGetFilterReverseIndexes, re } } } else { - indexes, err = self.DataManager.GetFilterReverseIndexes(engine.GetDBIndexKey(arg.ItemType, key, true), nil) + indexes, err = self.DataManager.GetFilterReverseIndexes(utils.PrefixToRevIndexCache[arg.ItemType], key, nil) if err != nil { return err } @@ -743,7 +743,7 @@ func (self *ApierV1) computeSupplierIndexes(tenant string, sppIDs *[]string, tra if err := sppIndexers.StoreIndexes(true, transactionID); err != nil { return nil, err } - return nil, err + return nil, nil } else { if err := sppIndexers.StoreIndexes(false, transactionID); err != nil { return nil, err diff --git a/engine/attributes_test.go b/engine/attributes_test.go index 12f70f52f..11c1f2399 100644 --- a/engine/attributes_test.go +++ b/engine/attributes_test.go @@ -528,8 +528,7 @@ func TestAttributeIndexer(t *testing.T) { } } if reverseRcvIdx, err := dmAtr.GetFilterReverseIndexes( - GetDBIndexKey(rfi1.itemType, rfi1.dbKeySuffix, true), - nil); err != nil { + utils.PrefixToRevIndexCache[rfi1.itemType], rfi1.dbKeySuffix, nil); err != nil { t.Error(err) } else { if !reflect.DeepEqual(reverseIdxes, reverseRcvIdx) { @@ -552,13 +551,10 @@ func TestAttributeIndexer(t *testing.T) { } } if reverseRcvIdx, err := dmAtr.GetFilterReverseIndexes( - GetDBIndexKey(rfi2.itemType, rfi2.dbKeySuffix, true), - nil); err != nil { + utils.PrefixToRevIndexCache[rfi2.itemType], rfi2.dbKeySuffix, nil); err != nil { t.Error(err) - } else { - if !reflect.DeepEqual(reverseIdxes, reverseRcvIdx) { - t.Errorf("Expecting %+v, received: %+v", reverseIdxes, reverseRcvIdx) - } + } else if !reflect.DeepEqual(reverseIdxes, reverseRcvIdx) { + t.Errorf("Expecting %+v, received: %+v", reverseIdxes, reverseRcvIdx) } //verify if old index was deleted ( context *any) if _, err := dmAtr.GetFilterIndexes(utils.PrefixToIndexCache[rfi1.itemType], @@ -566,8 +562,7 @@ func TestAttributeIndexer(t *testing.T) { t.Error(err) } if _, err := dmAtr.GetFilterReverseIndexes( - GetDBIndexKey(rfi1.itemType, rfi1.dbKeySuffix, true), - nil); err != utils.ErrNotFound { + utils.PrefixToRevIndexCache[rfi1.itemType], rfi1.dbKeySuffix, nil); err != utils.ErrNotFound { t.Error(err) } } diff --git a/engine/datamanager.go b/engine/datamanager.go index fb64af4a5..5d0d8629e 100644 --- a/engine/datamanager.go +++ b/engine/datamanager.go @@ -1117,12 +1117,13 @@ func (dm *DataManager) SetFilterIndexes(cacheID, itemIDPrefix string, return dm.DataDB().SetFilterIndexesDrv(cacheID, itemIDPrefix, indexes, commit, transactionID) } -func (dm *DataManager) RemoveFilterIndexes(dbKey string) (err error) { - return dm.DataDB().RemoveFilterIndexesDrv(dbKey) +func (dm *DataManager) RemoveFilterIndexes(cacheID, itemIDPrefix string) (err error) { + return dm.DataDB().RemoveFilterIndexesDrv(cacheID, itemIDPrefix) } -func (dm *DataManager) GetFilterReverseIndexes(dbKey string, fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) { - return dm.DataDB().GetFilterReverseIndexesDrv(dbKey, fldNameVal) +func (dm *DataManager) GetFilterReverseIndexes(cacheID, itemIDPrefix string, + fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) { + return dm.DataDB().GetFilterReverseIndexesDrv(cacheID, itemIDPrefix, fldNameVal) } func (dm *DataManager) SetFilterReverseIndexes(dbKey string, indexes map[string]utils.StringMap, commit bool, transactionID string) (err error) { diff --git a/engine/filterindexer.go b/engine/filterindexer.go index 75b31e11a..5eb5553e2 100644 --- a/engine/filterindexer.go +++ b/engine/filterindexer.go @@ -142,7 +142,7 @@ func (rfi *FilterIndexer) StoreIndexes(commit bool, transactionID string) (err e //Populate the FilterIndexer.reveseIndex for specifil itemID func (rfi *FilterIndexer) loadItemReverseIndex(filterType, itemID string) (err error) { rcvReveseIdx, err := rfi.dm.GetFilterReverseIndexes( - GetDBIndexKey(rfi.itemType, rfi.dbKeySuffix, true), + utils.PrefixToRevIndexCache[rfi.itemType], rfi.dbKeySuffix, map[string]string{itemID: ""}) if err != nil { return err diff --git a/engine/storage_interface.go b/engine/storage_interface.go index 230e6a370..4b43e5c34 100755 --- a/engine/storage_interface.go +++ b/engine/storage_interface.go @@ -122,8 +122,8 @@ type DataDB interface { fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) SetFilterIndexesDrv(cacheID, itemIDPrefix string, indexes map[string]utils.StringMap, commit bool, transactionID string) (err error) - RemoveFilterIndexesDrv(id string) (err error) - GetFilterReverseIndexesDrv(dbKey string, + RemoveFilterIndexesDrv(cacheID, itemIDPrefix string) (err error) + GetFilterReverseIndexesDrv(cacheID, itemIDPrefix string, fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) SetFilterReverseIndexesDrv(dbKey string, indexes map[string]utils.StringMap, commit bool, transactionID string) (err error) diff --git a/engine/storage_map.go b/engine/storage_map.go index 76e654657..cb0f47418 100755 --- a/engine/storage_map.go +++ b/engine/storage_map.go @@ -1299,18 +1299,19 @@ func (ms *MapStorage) SetFilterIndexesDrv(cacheID, itemIDPrefix string, } } -func (ms *MapStorage) RemoveFilterIndexesDrv(id string) (err error) { +func (ms *MapStorage) RemoveFilterIndexesDrv(cacheID, itemIDPrefix string) (err error) { ms.mu.Lock() defer ms.mu.Unlock() - delete(ms.dict, id) + delete(ms.dict, utils.CacheInstanceToPrefix[cacheID]+itemIDPrefix) return } //GetFilterReverseIndexesDrv retrieves ReverseIndexes from dataDB -func (ms *MapStorage) GetFilterReverseIndexesDrv(dbKey string, +func (ms *MapStorage) GetFilterReverseIndexesDrv(cacheID, itemIDPrefix string, fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) { ms.mu.RLock() defer ms.mu.RUnlock() + dbKey := utils.CacheInstanceToPrefix[cacheID] + itemIDPrefix values, ok := ms.dict[dbKey] if !ok { return nil, utils.ErrNotFound diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index feb0b163a..88f6978e7 100755 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -2025,10 +2025,10 @@ func (ms *MongoStorage) SetFilterIndexesDrv(cacheID, itemIDPrefix string, return } -func (ms *MongoStorage) RemoveFilterIndexesDrv(dbKey string) (err error) { +func (ms *MongoStorage) RemoveFilterIndexesDrv(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 @@ -2037,10 +2037,11 @@ func (ms *MongoStorage) RemoveFilterIndexesDrv(dbKey string) (err error) { } // GetFilterReverseIndexesDrv retrieves ReverseIndexes from dataDB -func (ms *MongoStorage) GetFilterReverseIndexesDrv(dbKey string, +func (ms *MongoStorage) GetFilterReverseIndexesDrv(cacheID, itemIDPrefix string, fldNameVal map[string]string) (revIdx map[string]utils.StringMap, err error) { session, col := ms.conn(colRFI) defer session.Close() + dbKey := utils.CacheInstanceToPrefix[cacheID] + itemIDPrefix var result struct { Key string Value map[string][]string diff --git a/engine/storage_redis.go b/engine/storage_redis.go index 62baec6c4..20dcbfec6 100755 --- a/engine/storage_redis.go +++ b/engine/storage_redis.go @@ -1442,14 +1442,15 @@ func (rs *RedisStorage) SetFilterIndexesDrv(cacheID, itemIDPrefix string, } } -func (rs *RedisStorage) RemoveFilterIndexesDrv(id string) (err error) { - return rs.Cmd("DEL", id).Err +func (rs *RedisStorage) RemoveFilterIndexesDrv(cacheID, itemIDPrefix string) (err error) { + return rs.Cmd("DEL", utils.CacheInstanceToPrefix[cacheID]+itemIDPrefix).Err } //GetFilterReverseIndexesDrv retrieves ReverseIndexes from dataDB -func (rs *RedisStorage) GetFilterReverseIndexesDrv(dbKey string, +func (rs *RedisStorage) GetFilterReverseIndexesDrv(cacheID, itemIDPrefix string, fldNameVal map[string]string) (indexes map[string]utils.StringMap, err error) { mp := make(map[string]string) + dbKey := utils.CacheInstanceToPrefix[cacheID] + itemIDPrefix if len(fldNameVal) == 0 { mp, err = rs.Cmd("HGETALL", dbKey).Map() if err != nil {