From 15467201167f1e37a9f7c0c22ce6fb755331fe58 Mon Sep 17 00:00:00 2001 From: TeoV Date: Fri, 20 Oct 2017 18:28:20 +0300 Subject: [PATCH] Add SetActions in DataManager --- apier/v1/apier.go | 2 +- apier/v2/apier.go | 2 +- engine/actions_test.go | 2 +- engine/calldesc_test.go | 4 ++-- engine/datamanager.go | 11 +++++++++++ engine/onstor_it_test.go | 4 ++-- engine/storage_interface.go | 2 +- engine/storage_map.go | 4 +--- engine/storage_mongo_datadb.go | 2 +- engine/storage_redis.go | 2 +- engine/tp_reader.go | 6 +++--- migrator/action.go | 2 +- 12 files changed, 26 insertions(+), 17 deletions(-) diff --git a/apier/v1/apier.go b/apier/v1/apier.go index 6971e7cb8..7def5dbff 100644 --- a/apier/v1/apier.go +++ b/apier/v1/apier.go @@ -554,7 +554,7 @@ func (self *ApierV1) SetActions(attrs V1AttrSetActions, reply *string) (err erro } storeActions[idx] = a } - if err := self.DataManager.DataDB().SetActions(attrs.ActionsId, storeActions, utils.NonTransactional); err != nil { + if err := self.DataManager.SetActions(attrs.ActionsId, storeActions, utils.NonTransactional); err != nil { return utils.NewErrServerError(err) } if err = self.DataManager.CacheDataFromDB(utils.ACTION_PREFIX, []string{attrs.ActionsId}, true); err != nil { diff --git a/apier/v2/apier.go b/apier/v2/apier.go index 633cc149f..54df6a9f6 100644 --- a/apier/v2/apier.go +++ b/apier/v2/apier.go @@ -373,7 +373,7 @@ func (self *ApierV2) SetActions(attrs utils.AttrSetActions, reply *string) error } storeActions[idx] = a } - if err := self.DataManager.DataDB().SetActions(attrs.ActionsId, storeActions, utils.NonTransactional); err != nil { + if err := self.DataManager.SetActions(attrs.ActionsId, storeActions, utils.NonTransactional); err != nil { return utils.NewErrServerError(err) } if err := self.DataManager.CacheDataFromDB(utils.ACTION_PREFIX, []string{attrs.ActionsId}, true); err != nil { diff --git a/engine/actions_test.go b/engine/actions_test.go index 1b95d7714..59e4b0e92 100644 --- a/engine/actions_test.go +++ b/engine/actions_test.go @@ -580,7 +580,7 @@ func TestActionPlansRemoveMember(t *testing.T) { }, } - dm.DataDB().SetActions(actions[0].Id, actions, utils.NonTransactional) + dm.SetActions(actions[0].Id, actions, utils.NonTransactional) at := &ActionTiming{ accountIDs: utils.StringMap{account1.ID: true}, diff --git a/engine/calldesc_test.go b/engine/calldesc_test.go index c23fab2dd..0d5acc428 100644 --- a/engine/calldesc_test.go +++ b/engine/calldesc_test.go @@ -100,8 +100,8 @@ func populateDB() { }}, } if dm.dataDB != nil { - dm.DataDB().SetActions("TEST_ACTIONS", ats, utils.NonTransactional) - dm.DataDB().SetActions("TEST_ACTIONS_ORDER", ats1, utils.NonTransactional) + dm.SetActions("TEST_ACTIONS", ats, utils.NonTransactional) + dm.SetActions("TEST_ACTIONS_ORDER", ats1, utils.NonTransactional) dm.DataDB().SetAccount(broker) dm.DataDB().SetAccount(minu) dm.DataDB().SetAccount(minitsboy) diff --git a/engine/datamanager.go b/engine/datamanager.go index 022336560..0f0946dac 100644 --- a/engine/datamanager.go +++ b/engine/datamanager.go @@ -645,3 +645,14 @@ func (dm *DataManager) GetActions(key string, skipCache bool, transactionID stri return } + +func (dm *DataManager) SetActions(key string, as Actions, transactionID string) (err error) { + if dm.DataDB().GetStorageType() == utils.MAPSTOR { + if err = dm.DataDB().SetActionsDrv(key, as); err != nil { + cache.RemKey(utils.ACTION_PREFIX+key, cacheCommit(transactionID), transactionID) + } + return + } else { + return dm.DataDB().SetActionsDrv(key, as) + } +} diff --git a/engine/onstor_it_test.go b/engine/onstor_it_test.go index 295a4c1e9..554f11995 100644 --- a/engine/onstor_it_test.go +++ b/engine/onstor_it_test.go @@ -445,7 +445,7 @@ func testOnStorITCacheActions(t *testing.T) { }, }, } - if err := onStor.DataDB().SetActions(acts[0].Id, acts, utils.NonTransactional); err != nil { + if err := onStor.SetActions(acts[0].Id, acts, utils.NonTransactional); err != nil { t.Error(err) } expectedCA := []string{"act_MINI"} @@ -1310,7 +1310,7 @@ func testOnStorITCRUDActions(t *testing.T) { if _, rcvErr := onStor.GetActions(acts[0].Id, true, utils.NonTransactional); rcvErr != utils.ErrNotFound { t.Error(rcvErr) } - if err := onStor.DataDB().SetActions(acts[0].Id, acts, utils.NonTransactional); err != nil { + if err := onStor.SetActions(acts[0].Id, acts, utils.NonTransactional); err != nil { t.Error(err) } if rcv, err := onStor.GetActions(acts[0].Id, true, utils.NonTransactional); err != nil { diff --git a/engine/storage_interface.go b/engine/storage_interface.go index 412ad29da..f1f84747f 100755 --- a/engine/storage_interface.go +++ b/engine/storage_interface.go @@ -67,7 +67,7 @@ type DataDB interface { GetDerivedChargersDrv(string) (*utils.DerivedChargers, error) SetDerivedChargers(string, *utils.DerivedChargers, string) error GetActionsDrv(string) (Actions, error) - SetActions(string, Actions, string) error + SetActionsDrv(string, Actions) error RemoveActions(string, string) error GetSharedGroupDrv(string) (*SharedGroup, error) SetSharedGroupDrv(*SharedGroup) error diff --git a/engine/storage_map.go b/engine/storage_map.go index a9a6de3c1..bea5b8b0e 100755 --- a/engine/storage_map.go +++ b/engine/storage_map.go @@ -483,14 +483,12 @@ func (ms *MapStorage) GetActionsDrv(key string) (as Actions, err error) { return } -func (ms *MapStorage) SetActions(key string, as Actions, transactionID string) (err error) { +func (ms *MapStorage) SetActionsDrv(key string, as Actions) (err error) { ms.mu.Lock() defer ms.mu.Unlock() - cCommit := cacheCommit(transactionID) cachekey := utils.ACTION_PREFIX + key result, err := ms.ms.Marshal(&as) ms.dict[cachekey] = result - cache.RemKey(cachekey, cCommit, transactionID) return } diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index 5f26bd6e7..e07726dd3 100755 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -974,7 +974,7 @@ func (ms *MongoStorage) GetActionsDrv(key string) (as Actions, err error) { return } -func (ms *MongoStorage) SetActions(key string, as Actions, transactionID string) error { +func (ms *MongoStorage) SetActionsDrv(key string, as Actions) error { session, col := ms.conn(colAct) defer session.Close() _, err := col.Upsert(bson.M{"key": key}, &struct { diff --git a/engine/storage_redis.go b/engine/storage_redis.go index eec3286b8..6d804493d 100755 --- a/engine/storage_redis.go +++ b/engine/storage_redis.go @@ -534,7 +534,7 @@ func (rs *RedisStorage) GetActionsDrv(key string) (as Actions, err error) { return } -func (rs *RedisStorage) SetActions(key string, as Actions, transactionID string) (err error) { +func (rs *RedisStorage) SetActionsDrv(key string, as Actions) (err error) { result, err := rs.ms.Marshal(&as) err = rs.Cmd("SET", utils.ACTION_PREFIX+key, result).Err return diff --git a/engine/tp_reader.go b/engine/tp_reader.go index 18868e115..e27f03e3d 100755 --- a/engine/tp_reader.go +++ b/engine/tp_reader.go @@ -1124,7 +1124,7 @@ func (tpr *TpReader) LoadAccountActionsFiltered(qriedAA *utils.TPAccountActions) } // write actions for k, as := range facts { - err = tpr.dm.DataDB().SetActions(k, as, utils.NonTransactional) + err = tpr.dm.SetActions(k, as, utils.NonTransactional) if err != nil { return err } @@ -1453,7 +1453,7 @@ func (tpr *TpReader) LoadCdrStatsFiltered(tag string, save bool) (err error) { if save { // write actions for k, as := range tpr.actions { - err = tpr.dm.DataDB().SetActions(k, as, utils.NonTransactional) + err = tpr.dm.SetActions(k, as, utils.NonTransactional) if err != nil { return err } @@ -1938,7 +1938,7 @@ func (tpr *TpReader) WriteToDatabase(flush, verbose, disable_reverse bool) (err log.Print("Actions:") } for k, as := range tpr.actions { - err = tpr.dm.DataDB().SetActions(k, as, utils.NonTransactional) + err = tpr.dm.SetActions(k, as, utils.NonTransactional) if err != nil { return err } diff --git a/migrator/action.go b/migrator/action.go index 19544f935..6fce8b768 100644 --- a/migrator/action.go +++ b/migrator/action.go @@ -56,7 +56,7 @@ func (m *Migrator) migrateActions() (err error) { } if m.dryRun != true { - if err := m.dm.DataDB().SetActions(acts[0].Id, acts, utils.NonTransactional); err != nil { + if err := m.dm.SetActions(acts[0].Id, acts, utils.NonTransactional); err != nil { return err } m.stats[utils.Actions] += 1