mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Clarify cacheRead/CacheWrite for filters
This commit is contained in:
committed by
Dan Christian Bogos
parent
cf4aebaa8c
commit
41e646499f
@@ -323,7 +323,7 @@ func (self *ApierV1) computeThresholdIndexes(tenant string, thIDs *[]string,
|
||||
},
|
||||
}
|
||||
} else if fltr, err = self.DataManager.GetFilter(th.Tenant, fltrID,
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
err = fmt.Errorf("broken reference to filter: %+v for threshold: %+v",
|
||||
fltrID, th)
|
||||
@@ -391,7 +391,7 @@ func (self *ApierV1) computeAttributeIndexes(tenant, context string, attrIDs *[]
|
||||
},
|
||||
}
|
||||
} else if fltr, err = self.DataManager.GetFilter(ap.Tenant, fltrID,
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
err = fmt.Errorf("broken reference to filter: %+v for attribute: %+v",
|
||||
fltrID, ap)
|
||||
@@ -458,7 +458,7 @@ func (self *ApierV1) computeResourceIndexes(tenant string, rsIDs *[]string,
|
||||
},
|
||||
}
|
||||
} else if fltr, err = self.DataManager.GetFilter(rp.Tenant, fltrID,
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
err = fmt.Errorf("broken reference to filter: %+v for resource: %+v",
|
||||
fltrID, rp)
|
||||
@@ -525,7 +525,7 @@ func (self *ApierV1) computeStatIndexes(tenant string, stIDs *[]string,
|
||||
},
|
||||
}
|
||||
} else if fltr, err = self.DataManager.GetFilter(sqp.Tenant, fltrID,
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
err = fmt.Errorf("broken reference to filter: %+v for statqueue: %+v",
|
||||
fltrID, sqp)
|
||||
@@ -592,7 +592,7 @@ func (self *ApierV1) computeSupplierIndexes(tenant string, sppIDs *[]string,
|
||||
},
|
||||
}
|
||||
} else if fltr, err = self.DataManager.GetFilter(spp.Tenant, fltrID,
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
err = fmt.Errorf("broken reference to filter: %+v for suppliers: %+v",
|
||||
fltrID, spp)
|
||||
@@ -659,7 +659,7 @@ func (self *ApierV1) computeChargerIndexes(tenant string, cppIDs *[]string,
|
||||
},
|
||||
}
|
||||
} else if fltr, err = self.DataManager.GetFilter(cpp.Tenant, fltrID,
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
err = fmt.Errorf("broken reference to filter: %+v for charger: %+v",
|
||||
fltrID, cpp)
|
||||
|
||||
@@ -40,7 +40,7 @@ func (self *ApierV1) GetFilter(arg utils.TenantID, reply *engine.Filter) error {
|
||||
if missing := utils.MissingStructFields(&arg, []string{"Tenant", "ID"}); len(missing) != 0 { //Params missing
|
||||
return utils.NewErrMandatoryIeMissing(missing...)
|
||||
}
|
||||
if fltr, err := self.DataManager.GetFilter(arg.Tenant, arg.ID, false, utils.NonTransactional); err != nil {
|
||||
if fltr, err := self.DataManager.GetFilter(arg.Tenant, arg.ID, true, true, utils.NonTransactional); err != nil {
|
||||
if err.Error() != utils.ErrNotFound.Error() {
|
||||
err = utils.NewErrServerError(err)
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ func TestChargerPopulateChargerService(t *testing.T) {
|
||||
t.Errorf("Error: %+v", err)
|
||||
}
|
||||
chargerSrv, err = NewChargerService(dmCharger,
|
||||
&FilterS{dm: dmAtr, cfg: defaultCfg}, nil, defaultCfg)
|
||||
&FilterS{dm: dmCharger, cfg: defaultCfg}, nil, defaultCfg)
|
||||
if err != nil {
|
||||
t.Errorf("Error: %+v", err)
|
||||
}
|
||||
@@ -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,
|
||||
true, true, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
t.Errorf("Error: %+v", err)
|
||||
} else if !reflect.DeepEqual(cp, tempCp) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", cp, tempCp)
|
||||
@@ -190,19 +190,15 @@ func TestChargerMatchingChargerProfilesForEvent(t *testing.T) {
|
||||
t.Errorf("Error: %+v", err)
|
||||
}
|
||||
|
||||
rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[0])
|
||||
if err != nil {
|
||||
if rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[0]); err != nil {
|
||||
t.Errorf("Error: %+v", err)
|
||||
}
|
||||
if !reflect.DeepEqual(cPPs[0], rcv[0]) {
|
||||
} else if !reflect.DeepEqual(cPPs[0], rcv[0]) {
|
||||
t.Errorf("Expecting: %+v, received: %+v ", cPPs[0], rcv[0])
|
||||
}
|
||||
|
||||
rcv, err = chargerSrv.matchingChargerProfilesForEvent(chargerEvents[1])
|
||||
if err != nil {
|
||||
if rcv, err := chargerSrv.matchingChargerProfilesForEvent(chargerEvents[1]); err != nil {
|
||||
t.Errorf("Error: %+v", err)
|
||||
}
|
||||
if !reflect.DeepEqual(cPPs[1], rcv[0]) {
|
||||
} else if !reflect.DeepEqual(cPPs[1], rcv[0]) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(cPPs[1]), utils.ToJSON(rcv))
|
||||
}
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ func (dm *DataManager) CacheDataFromDB(prfx string, ids []string, mustBeCached b
|
||||
_, err = dm.GetThreshold(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional)
|
||||
case utils.FilterPrefix:
|
||||
tntID := utils.NewTenantID(dataID)
|
||||
_, err = dm.GetFilter(tntID.Tenant, tntID.ID, true, utils.NonTransactional)
|
||||
_, err = dm.GetFilter(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional)
|
||||
case utils.SupplierProfilePrefix:
|
||||
tntID := utils.NewTenantID(dataID)
|
||||
_, err = dm.GetSupplierProfile(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional)
|
||||
@@ -310,10 +310,10 @@ func (dm *DataManager) RemoveStatQueue(tenant, id string, transactionID string)
|
||||
}
|
||||
|
||||
// GetFilter returns
|
||||
func (dm *DataManager) GetFilter(tenant, id string,
|
||||
skipCache bool, transactionID string) (fltr *Filter, err error) {
|
||||
func (dm *DataManager) GetFilter(tenant, id string, cacheRead, cacheWrite bool,
|
||||
transactionID string) (fltr *Filter, err error) {
|
||||
tntID := utils.ConcatenatedKey(tenant, id)
|
||||
if !skipCache {
|
||||
if cacheRead {
|
||||
if x, ok := Cache.Get(utils.CacheFilters, tntID); ok {
|
||||
if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
@@ -324,17 +324,21 @@ func (dm *DataManager) GetFilter(tenant, id string,
|
||||
if strings.HasPrefix(id, utils.Meta) {
|
||||
fltr, err = NewFilterFromInline(tenant, id)
|
||||
} else {
|
||||
fltr, err = dm.dataDB.GetFilterDrv(tenant, id)
|
||||
fltr, err = dm.DataDB().GetFilterDrv(tenant, id)
|
||||
}
|
||||
if err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
Cache.Set(utils.CacheFilters, tntID, nil, nil,
|
||||
cacheCommit(transactionID), transactionID)
|
||||
if cacheWrite {
|
||||
Cache.Set(utils.CacheFilters, tntID, nil, nil,
|
||||
cacheCommit(transactionID), transactionID)
|
||||
}
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
Cache.Set(utils.CacheFilters, tntID, fltr, nil,
|
||||
cacheCommit(transactionID), transactionID)
|
||||
if cacheWrite {
|
||||
Cache.Set(utils.CacheFilters, tntID, fltr, nil,
|
||||
cacheCommit(transactionID), transactionID)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -224,7 +224,7 @@ func (rfi *FilterIndexer) RemoveItemFromIndex(tenant, itemID string, oldFilters
|
||||
},
|
||||
}
|
||||
} else if fltr, err = rfi.dm.GetFilter(tenant, fltrID,
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
err = fmt.Errorf("broken reference to filter: %+v for itemType: %+v and ID: %+v",
|
||||
fltrID, rfi.itemType, itemID)
|
||||
@@ -285,7 +285,7 @@ func createAndIndex(itemPrefix, tenant, context, itemID string, filterIDs []stri
|
||||
},
|
||||
}
|
||||
} else if fltr, err = dm.GetFilter(tenant, fltrID,
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err == utils.ErrNotFound {
|
||||
err = fmt.Errorf("broken reference to filter: %+v for itemType: %+v and ID: %+v",
|
||||
fltrID, itemPrefix, itemID)
|
||||
|
||||
@@ -85,7 +85,7 @@ func (fS *FilterS) Pass(tenant string, filterIDs []string,
|
||||
}
|
||||
for _, fltrID := range filterIDs {
|
||||
f, err := fS.dm.GetFilter(tenant, fltrID,
|
||||
false, utils.NonTransactional)
|
||||
true, true, utils.NonTransactional)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
@@ -2280,7 +2280,7 @@ func testOnStorITFilter(t *testing.T) {
|
||||
},
|
||||
}
|
||||
if _, rcvErr := onStor.GetFilter("cgrates.org", "Filter1",
|
||||
false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
|
||||
true, false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
|
||||
t.Error(rcvErr)
|
||||
}
|
||||
if err := onStor.SetFilter(fp); err != nil {
|
||||
@@ -2288,14 +2288,14 @@ func testOnStorITFilter(t *testing.T) {
|
||||
}
|
||||
//get from cache
|
||||
if rcv, err := onStor.GetFilter("cgrates.org", "Filter1",
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
} else if !(reflect.DeepEqual(fp, rcv)) {
|
||||
t.Errorf("Expecting: %v, received: %v", fp, rcv)
|
||||
}
|
||||
//get from database
|
||||
if rcv, err := onStor.GetFilter("cgrates.org", "Filter1",
|
||||
true, utils.NonTransactional); err != nil {
|
||||
false, false, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
} else if !(reflect.DeepEqual(fp, rcv)) {
|
||||
t.Errorf("Expecting: %v, received: %v", fp, rcv)
|
||||
@@ -2325,14 +2325,14 @@ func testOnStorITFilter(t *testing.T) {
|
||||
time.Sleep(sleepDelay)
|
||||
//get from cache
|
||||
if rcv, err := onStor.GetFilter("cgrates.org", "Filter1",
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
} else if !(reflect.DeepEqual(fp, rcv)) {
|
||||
t.Errorf("Expecting: %v, received: %v", fp, rcv)
|
||||
}
|
||||
//get from database
|
||||
if rcv, err := onStor.GetFilter("cgrates.org", "Filter1",
|
||||
true, utils.NonTransactional); err != nil {
|
||||
false, false, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
} else if !(reflect.DeepEqual(fp, rcv)) {
|
||||
t.Errorf("Expecting: %v, received: %v", fp, rcv)
|
||||
@@ -2342,12 +2342,12 @@ func testOnStorITFilter(t *testing.T) {
|
||||
}
|
||||
//check cache if removed
|
||||
if _, rcvErr := onStor.GetFilter("cgrates.org", "Filter1",
|
||||
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.GetFilter("cgrates.org", "Filter1",
|
||||
true, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
|
||||
false, false, utils.NonTransactional); rcvErr != nil && rcvErr != utils.ErrNotFound {
|
||||
t.Error(rcvErr)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -454,14 +454,14 @@ cgrates.org,FLTR_ACNT_1002,*string,Account,1002,2014-07-29T15:00:00Z
|
||||
t.Errorf("wrong buffer content: %+v", ldr.bufLoaderData)
|
||||
}
|
||||
if fltr, err := ldr.dm.GetFilter("cgrates.org", "FLTR_1",
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, true, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(eFltr1, fltr) {
|
||||
t.Errorf("expecting: %s, received: %s",
|
||||
utils.ToJSON(eFltr1), utils.ToJSON(fltr))
|
||||
}
|
||||
if fltr, err := ldr.dm.GetFilter("cgrates.org", "FLTR_DST_DE",
|
||||
false, utils.NonTransactional); err != nil {
|
||||
true, true, utils.NonTransactional); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(eFltr2, fltr) {
|
||||
t.Errorf("expecting: %s, received: %s",
|
||||
|
||||
@@ -36,7 +36,7 @@ func (m *Migrator) migrateCurrentRequestFilter() (err error) {
|
||||
}
|
||||
for _, id := range ids {
|
||||
idg := strings.TrimPrefix(id, utils.FilterPrefix+tenant+":")
|
||||
fl, err := m.dmIN.DataManager().GetFilter(tenant, idg, true, utils.NonTransactional)
|
||||
fl, err := m.dmIN.DataManager().GetFilter(tenant, idg, false, false, utils.NonTransactional)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ type v1Stat struct {
|
||||
type v1Stats []*v1Stat
|
||||
|
||||
func (m *Migrator) migrateCurrentStats() (err error) {
|
||||
fmt.Println("Ajunge aici ???")
|
||||
var ids []string
|
||||
tenant := config.CgrConfig().DefaultTenant
|
||||
//StatQueue
|
||||
@@ -71,6 +72,7 @@ func (m *Migrator) migrateCurrentStats() (err error) {
|
||||
idg := strings.TrimPrefix(id, utils.StatQueuePrefix+tenant+":")
|
||||
sgs, err := m.dmIN.DataManager().GetStatQueue(tenant, idg, false, false, utils.NonTransactional)
|
||||
if err != nil {
|
||||
|
||||
return err
|
||||
}
|
||||
if sgs != nil {
|
||||
|
||||
@@ -258,7 +258,7 @@ func testStsITMigrateAndMove(t *testing.T) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", sqp, result)
|
||||
}
|
||||
|
||||
result1, err := stsMigrator.dmOut.DataManager().DataDB().GetFilterDrv("cgrates.org", v1Sts.Id)
|
||||
result1, err := stsMigrator.dmOut.DataManager().GetFilter("cgrates.org", v1Sts.Id, false, false, utils.NonTransactional)
|
||||
if err != nil {
|
||||
t.Error("Error when getting Stats ", err.Error())
|
||||
}
|
||||
@@ -277,12 +277,15 @@ func testStsITMigrateAndMove(t *testing.T) {
|
||||
}
|
||||
|
||||
case utils.Move:
|
||||
if err := stsMigrator.dmIN.DataManager().DataDB().SetStatQueueProfileDrv(sqp); err != nil {
|
||||
if err := stsMigrator.dmIN.DataManager().SetStatQueueProfile(sqp, false); err != nil {
|
||||
t.Error("Error when setting Stats ", err.Error())
|
||||
}
|
||||
if err := stsMigrator.dmIN.DataManager().SetStatQueue(sq); err != nil {
|
||||
t.Error("Error when setting Stats ", err.Error())
|
||||
}
|
||||
if err := stsMigrator.dmOut.DataManager().SetFilter(filter); err != nil {
|
||||
t.Error("Error when setting Filter ", err.Error())
|
||||
}
|
||||
currentVersion := engine.CurrentDataDBVersions()
|
||||
err := stsMigrator.dmOut.DataManager().DataDB().SetVersions(currentVersion, false)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user