From b8e43f14f2a9dbc164d14c3efbaea32bfd0714dd Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Mon, 27 Jul 2015 16:21:30 +0300 Subject: [PATCH] optimized alliases removal --- apier/v1/aliases.go | 10 ++++++---- engine/storage_redis.go | 18 +++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/apier/v1/aliases.go b/apier/v1/aliases.go index d0b276b45..e85f0019f 100644 --- a/apier/v1/aliases.go +++ b/apier/v1/aliases.go @@ -76,9 +76,10 @@ func (self *ApierV1) RemRatingSubjectAliases(tenantRatingSubject engine.TenantRa return utils.NewErrServerError(err) } - if err := self.RatingDb.CachePrefixes(utils.RP_ALIAS_PREFIX); err != nil { + // cache refresh not needed, synched in RemoveRpAliases + /*if err := self.RatingDb.CachePrefixes(utils.RP_ALIAS_PREFIX); err != nil { return utils.NewErrServerError(err) - } + }*/ *reply = utils.OK return nil } @@ -124,9 +125,10 @@ func (self *ApierV1) RemAccountAliases(tenantAccount engine.TenantAccount, reply if err := self.RatingDb.RemoveAccAliases([]*engine.TenantAccount{&tenantAccount}); err != nil { return utils.NewErrServerError(err) } - if err := self.RatingDb.CachePrefixes(utils.ACC_ALIAS_PREFIX); err != nil { + // cache refresh not needed, synched in RemoveRpAliases + /*if err := self.RatingDb.CachePrefixes(utils.ACC_ALIAS_PREFIX); err != nil { return utils.NewErrServerError(err) - } + }*/ *reply = utils.OK return nil } diff --git a/engine/storage_redis.go b/engine/storage_redis.go index 658b31d1e..062f2a018 100644 --- a/engine/storage_redis.go +++ b/engine/storage_redis.go @@ -411,15 +411,13 @@ func (rs *RedisStorage) SetRpAlias(key, alias string) (err error) { // Removes the aliases of a specific account, on a tenant func (rs *RedisStorage) RemoveRpAliases(tenantRtSubjects []*TenantRatingSubject) (err error) { - alsKeys, err := rs.db.Keys(utils.RP_ALIAS_PREFIX + "*") + alsMap, err := cache2go.GetAllEntries(utils.RP_ALIAS_PREFIX) if err != nil { return err } - for _, key := range alsKeys { - alias, err := rs.GetRpAlias(key[len(utils.RP_ALIAS_PREFIX):], true) - if err != nil { - return err - } + + for key, aliasInterface := range alsMap { + alias := aliasInterface.Value().(string) for _, tntRSubj := range tenantRtSubjects { tenantPrfx := utils.RP_ALIAS_PREFIX + tntRSubj.Tenant + utils.CONCATENATED_KEY_SEP if len(key) < len(tenantPrfx) || tenantPrfx != key[:len(tenantPrfx)] { // filter out the tenant for accounts @@ -428,10 +426,10 @@ func (rs *RedisStorage) RemoveRpAliases(tenantRtSubjects []*TenantRatingSubject) if tntRSubj.Subject != alias { continue } - cache2go.RemKey(key) if _, err = rs.db.Del(key); err != nil { return err } + cache2go.RemKey(key) break } } @@ -508,11 +506,13 @@ func (rs *RedisStorage) SetAccAlias(key, alias string) (err error) { } func (rs *RedisStorage) RemoveAccAliases(tenantAccounts []*TenantAccount) (err error) { - alsKeys, err := rs.db.Keys(utils.ACC_ALIAS_PREFIX + "*") + alsMap, err := cache2go.GetAllEntries(utils.ACC_ALIAS_PREFIX) if err != nil { return err } - for _, key := range alsKeys { + + for key, aliasInterface := range alsMap { + alias := aliasInterface.Value().(string) alias, err := rs.GetAccAlias(key[len(utils.ACC_ALIAS_PREFIX):], true) if err != nil { return err