mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Clarify cacheRead / cacheWrite for chargers
This commit is contained in:
committed by
Dan Christian Bogos
parent
2776713566
commit
6c3e5d80ee
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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"}
|
||||
],
|
||||
},
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user