From 6c3e5d80eee2df888bce8278757cc198dbcd6fef Mon Sep 17 00:00:00 2001 From: TeoV Date: Mon, 24 Sep 2018 14:47:32 -0400 Subject: [PATCH] Clarify cacheRead / cacheWrite for chargers --- apier/v1/chargers.go | 2 +- apier/v1/filter_indexes.go | 4 ++-- data/conf/samples/sessions/cgrates.json | 22 +++++++++++----------- engine/chargers.go | 2 +- engine/chargers_test.go | 2 +- engine/datamanager.go | 18 ++++++++++-------- engine/filterindexer.go | 2 +- engine/loader_it_test.go | 2 +- engine/onstor_it_test.go | 14 +++++++------- loaders/loader_test.go | 4 ++-- migrator/chargers.go | 2 +- 11 files changed, 38 insertions(+), 36 deletions(-) diff --git a/apier/v1/chargers.go b/apier/v1/chargers.go index d53a88f45..0f2b45ea2 100644 --- a/apier/v1/chargers.go +++ b/apier/v1/chargers.go @@ -28,7 +28,7 @@ func (apierV1 *ApierV1) GetChargerProfile(arg utils.TenantID, reply *engine.Char if missing := utils.MissingStructFields(&arg, []string{"Tenant", "ID"}); len(missing) != 0 { //Params missing return utils.NewErrMandatoryIeMissing(missing...) } - if cpp, err := apierV1.DataManager.GetChargerProfile(arg.Tenant, arg.ID, false, utils.NonTransactional); err != nil { + if cpp, err := apierV1.DataManager.GetChargerProfile(arg.Tenant, arg.ID, true, true, utils.NonTransactional); err != nil { if err.Error() != utils.ErrNotFound.Error() { err = utils.NewErrServerError(err) } diff --git a/apier/v1/filter_indexes.go b/apier/v1/filter_indexes.go index 659609626..9dc36d58b 100644 --- a/apier/v1/filter_indexes.go +++ b/apier/v1/filter_indexes.go @@ -265,7 +265,7 @@ func (self *ApierV1) ComputeFilterIndexes(args utils.ArgsComputeFilterIndexes, r if cppIndexes != nil { if err := attrIndexes.StoreIndexes(true, transactionID); err != nil { for _, id := range *args.ChargerIDs { - cpp, err := self.DataManager.GetChargerProfile(args.Tenant, id, false, utils.NonTransactional) + cpp, err := self.DataManager.GetChargerProfile(args.Tenant, id, true, false, utils.NonTransactional) if err != nil { return err } @@ -632,7 +632,7 @@ func (self *ApierV1) computeChargerIndexes(tenant string, cppIDs *[]string, transactionID = utils.NonTransactional } for _, id := range chargerIDs { - cpp, err := self.DataManager.GetChargerProfile(tenant, id, false, utils.NonTransactional) + cpp, err := self.DataManager.GetChargerProfile(tenant, id, true, false, utils.NonTransactional) if err != nil { return nil, err } diff --git a/data/conf/samples/sessions/cgrates.json b/data/conf/samples/sessions/cgrates.json index 688c5a41f..3c7c7e0f5 100644 --- a/data/conf/samples/sessions/cgrates.json +++ b/data/conf/samples/sessions/cgrates.json @@ -34,7 +34,7 @@ "cdrs": { "enabled": true, "chargers_conns":[ - {"address": "*internal"}, + {"address": "127.0.0.1:2012", "transport": "*json"}, ], }, @@ -42,7 +42,7 @@ "chargers": { "enabled": true, "attributes_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], }, @@ -67,7 +67,7 @@ "enabled": true, "store_interval": "1s", "thresholds_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], }, @@ -81,28 +81,28 @@ "enabled": true, "session_ttl": "50ms", "chargers_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], "rals_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], "cdrs_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], "resources_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], "thresholds_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], "stats_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], "suppliers_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], "attributes_conns": [ - {"address": "*internal"} + {"address": "127.0.0.1:2012", "transport": "*json"} ], }, diff --git a/engine/chargers.go b/engine/chargers.go index 948da2753..84f1d88d1 100644 --- a/engine/chargers.go +++ b/engine/chargers.go @@ -71,7 +71,7 @@ func (cS *ChargerService) matchingChargerProfilesForEvent(cgrEv *utils.CGREvent) } matchingCPs := make(map[string]*ChargerProfile) for cpID := range cpIDs { - cP, err := cS.dm.GetChargerProfile(cgrEv.Tenant, cpID, false, utils.NonTransactional) + cP, err := cS.dm.GetChargerProfile(cgrEv.Tenant, cpID, true, true, utils.NonTransactional) if err != nil { if err == utils.ErrNotFound { continue diff --git a/engine/chargers_test.go b/engine/chargers_test.go index 43b94715c..45b9e5aa7 100755 --- a/engine/chargers_test.go +++ b/engine/chargers_test.go @@ -176,7 +176,7 @@ func TestChargerSetChargerProfiles(t *testing.T) { //verify each charger from cache for _, cp := range cPPs { if tempCp, err := dmCharger.GetChargerProfile(cp.Tenant, cp.ID, - false, utils.NonTransactional); err != nil { + true, true, utils.NonTransactional); err != nil { t.Errorf("Error: %+v", err) } else if !reflect.DeepEqual(cp, tempCp) { t.Errorf("Expecting: %+v, received: %+v", cp, tempCp) diff --git a/engine/datamanager.go b/engine/datamanager.go index 44d33d56c..488306cbf 100644 --- a/engine/datamanager.go +++ b/engine/datamanager.go @@ -244,7 +244,7 @@ func (dm *DataManager) CacheDataFromDB(prfx string, ids []string, mustBeCached b _, err = dm.GetAttributeProfile(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional) case utils.ChargerProfilePrefix: tntID := utils.NewTenantID(dataID) - _, err = dm.GetChargerProfile(tntID.Tenant, tntID.ID, true, utils.NonTransactional) + _, err = dm.GetChargerProfile(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional) } if err != nil { return utils.NewCGRError(utils.DataManager, @@ -1234,10 +1234,10 @@ func (dm *DataManager) RemoveAttributeProfile(tenant, id string, contexts []stri return } -func (dm *DataManager) GetChargerProfile(tenant, id string, skipCache bool, +func (dm *DataManager) GetChargerProfile(tenant, id string, cacheRead, cacheWrite bool, transactionID string) (cpp *ChargerProfile, err error) { tntID := utils.ConcatenatedKey(tenant, id) - if !skipCache { + if cacheRead { if x, ok := Cache.Get(utils.CacheChargerProfiles, tntID); ok { if x == nil { return nil, utils.ErrNotFound @@ -1247,19 +1247,21 @@ func (dm *DataManager) GetChargerProfile(tenant, id string, skipCache bool, } cpp, err = dm.dataDB.GetChargerProfileDrv(tenant, id) if err != nil { - if err == utils.ErrNotFound { + if err == utils.ErrNotFound && cacheWrite { Cache.Set(utils.CacheChargerProfiles, tntID, nil, nil, cacheCommit(transactionID), transactionID) } return nil, err } - Cache.Set(utils.CacheChargerProfiles, tntID, cpp, nil, - cacheCommit(transactionID), transactionID) + if cacheWrite { + Cache.Set(utils.CacheChargerProfiles, tntID, cpp, nil, + cacheCommit(transactionID), transactionID) + } return } func (dm *DataManager) SetChargerProfile(cpp *ChargerProfile, withIndex bool) (err error) { - oldCpp, err := dm.GetChargerProfile(cpp.Tenant, cpp.ID, true, utils.NonTransactional) + oldCpp, err := dm.GetChargerProfile(cpp.Tenant, cpp.ID, true, false, utils.NonTransactional) if err != nil && err != utils.ErrNotFound { return err } @@ -1291,7 +1293,7 @@ func (dm *DataManager) SetChargerProfile(cpp *ChargerProfile, withIndex bool) (e func (dm *DataManager) RemoveChargerProfile(tenant, id string, transactionID string, withIndex bool) (err error) { - oldCpp, err := dm.GetChargerProfile(tenant, id, true, utils.NonTransactional) + oldCpp, err := dm.GetChargerProfile(tenant, id, true, false, utils.NonTransactional) if err != nil && err != utils.ErrNotFound { return err } diff --git a/engine/filterindexer.go b/engine/filterindexer.go index 7858beb89..c754514ee 100644 --- a/engine/filterindexer.go +++ b/engine/filterindexer.go @@ -191,7 +191,7 @@ func (rfi *FilterIndexer) RemoveItemFromIndex(tenant, itemID string, oldFilters } } case utils.ChargerProfilePrefix: - cpp, err := rfi.dm.GetChargerProfile(tenant, itemID, false, utils.NonTransactional) + cpp, err := rfi.dm.GetChargerProfile(tenant, itemID, true, false, utils.NonTransactional) if err != nil && err != utils.ErrNotFound { return err } diff --git a/engine/loader_it_test.go b/engine/loader_it_test.go index ca8a22cc4..a210e08d2 100644 --- a/engine/loader_it_test.go +++ b/engine/loader_it_test.go @@ -502,7 +502,7 @@ func TestLoaderITWriteToDatabase(t *testing.T) { } for tenatid, cpp := range loader.chargerProfiles { - rcv, err := loader.dm.GetChargerProfile(tenatid.Tenant, tenatid.ID, true, utils.NonTransactional) + rcv, err := loader.dm.GetChargerProfile(tenatid.Tenant, tenatid.ID, false, false, utils.NonTransactional) if err != nil { t.Errorf("Failed GetChargerProfile, tenant: %s, id: %s, error: %s ", cpp.Tenant, cpp.ID, err.Error()) } diff --git a/engine/onstor_it_test.go b/engine/onstor_it_test.go index e04980a72..eaa481817 100644 --- a/engine/onstor_it_test.go +++ b/engine/onstor_it_test.go @@ -2682,7 +2682,7 @@ func testOnStorITChargerProfile(t *testing.T) { Weight: 20, } if _, rcvErr := onStor.GetChargerProfile("cgrates.org", "CPP_1", - false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound { + true, false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound { t.Error(rcvErr) } if err := onStor.SetChargerProfile(cpp, false); err != nil { @@ -2690,14 +2690,14 @@ func testOnStorITChargerProfile(t *testing.T) { } //get from cache if rcv, err := onStor.GetChargerProfile("cgrates.org", "CPP_1", - false, utils.NonTransactional); err != nil { + true, false, utils.NonTransactional); err != nil { t.Error(err) } else if !(reflect.DeepEqual(cpp, rcv)) { t.Errorf("Expecting: %v, received: %v", cpp, rcv) } //get from database if rcv, err := onStor.GetChargerProfile("cgrates.org", "CPP_1", - true, utils.NonTransactional); err != nil { + false, false, utils.NonTransactional); err != nil { t.Error(err) } else if !(reflect.DeepEqual(cpp, rcv)) { t.Errorf("Expecting: %v, received: %v", cpp, rcv) @@ -2716,14 +2716,14 @@ func testOnStorITChargerProfile(t *testing.T) { time.Sleep(sleepDelay) //get from cache if rcv, err := onStor.GetChargerProfile("cgrates.org", "CPP_1", - false, utils.NonTransactional); err != nil { + true, false, utils.NonTransactional); err != nil { t.Error(err) } else if !(reflect.DeepEqual(cpp, rcv)) { t.Errorf("Expecting: %v, received: %v", cpp, rcv) } //get from database if rcv, err := onStor.GetChargerProfile("cgrates.org", "CPP_1", - true, utils.NonTransactional); err != nil { + false, false, utils.NonTransactional); err != nil { t.Error(err) } else if !(reflect.DeepEqual(cpp, rcv)) { t.Errorf("Expecting: %v, received: %v", cpp, rcv) @@ -2734,12 +2734,12 @@ func testOnStorITChargerProfile(t *testing.T) { } //check cache if removed if _, rcvErr := onStor.GetChargerProfile("cgrates.org", "CPP_1", - false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound { + true, false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound { t.Error(rcvErr) } //check database if removed if _, rcvErr := onStor.GetChargerProfile("cgrates.org", "CPP_1", - true, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound { + false, false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound { t.Error(rcvErr) } } diff --git a/loaders/loader_test.go b/loaders/loader_test.go index eea6a1795..ff6084113 100644 --- a/loaders/loader_test.go +++ b/loaders/loader_test.go @@ -1030,13 +1030,13 @@ cgrates.org,Charge2,*string:Account:1003,2014-07-29T15:00:00Z,*default,Attr3,10 Weight: 10, } if rcv, err := ldr.dm.GetChargerProfile("cgrates.org", "Charge1", - false, utils.NonTransactional); err != nil { + true, false, utils.NonTransactional); err != nil { t.Error(err) } else if !reflect.DeepEqual(eCharger1, rcv) && !reflect.DeepEqual(eCharger1Rev, rcv) { t.Errorf("expecting: %s, received: %s", utils.ToJSON(eCharger1), utils.ToJSON(rcv)) } if rcv, err := ldr.dm.GetChargerProfile("cgrates.org", "Charge2", - false, utils.NonTransactional); err != nil { + true, false, utils.NonTransactional); err != nil { t.Error(err) } else if !reflect.DeepEqual(eCharger2, rcv) { t.Errorf("expecting: %+v, received: %+v", eCharger2, rcv) diff --git a/migrator/chargers.go b/migrator/chargers.go index 7cb276727..a69a8167b 100755 --- a/migrator/chargers.go +++ b/migrator/chargers.go @@ -36,7 +36,7 @@ func (m *Migrator) migrateCurrentCharger() (err error) { } for _, id := range ids { idg := strings.TrimPrefix(id, utils.ChargerProfilePrefix+tenant+":") - cpp, err := m.dmIN.DataManager().GetChargerProfile(tenant, idg, true, utils.NonTransactional) + cpp, err := m.dmIN.DataManager().GetChargerProfile(tenant, idg, false, false, utils.NonTransactional) if err != nil { return err }