Clarify cacheRead/cacheWrite for stats

This commit is contained in:
TeoV
2018-09-25 03:23:51 -04:00
committed by Dan Christian Bogos
parent 2425734dcd
commit ed2b45d8b0
6 changed files with 24 additions and 22 deletions

View File

@@ -224,7 +224,7 @@ func (dm *DataManager) CacheDataFromDB(prfx string, ids []string, mustBeCached b
_, err = dm.GetStatQueueProfile(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional)
case utils.StatQueuePrefix:
tntID := utils.NewTenantID(dataID)
_, err = dm.GetStatQueue(tntID.Tenant, tntID.ID, true, utils.NonTransactional)
_, err = dm.GetStatQueue(tntID.Tenant, tntID.ID, false, true, utils.NonTransactional)
case utils.TimingsPrefix:
_, err = dm.GetTiming(dataID, true, utils.NonTransactional)
case utils.ThresholdProfilePrefix:
@@ -259,9 +259,9 @@ func (dm *DataManager) CacheDataFromDB(prfx string, ids []string, mustBeCached b
// GetStatQueue retrieves a StatQueue from dataDB
// handles caching and deserialization of metrics
func (dm *DataManager) GetStatQueue(tenant, id string,
skipCache bool, transactionID string) (sq *StatQueue, err error) {
cacheRead, cacheWrite bool, transactionID string) (sq *StatQueue, err error) {
tntID := utils.ConcatenatedKey(tenant, id)
if !skipCache {
if cacheRead {
if x, ok := Cache.Get(utils.CacheStatQueues, tntID); ok {
if x == nil {
return nil, utils.ErrNotFound
@@ -271,7 +271,7 @@ func (dm *DataManager) GetStatQueue(tenant, id string,
}
ssq, err := dm.dataDB.GetStoredStatQueueDrv(tenant, id)
if err != nil {
if err == utils.ErrNotFound {
if err == utils.ErrNotFound && cacheWrite {
Cache.Set(utils.CacheStatQueues, tntID, nil, nil,
cacheCommit(transactionID), transactionID)
}
@@ -280,8 +280,10 @@ func (dm *DataManager) GetStatQueue(tenant, id string,
if sq, err = ssq.AsStatQueue(dm.dataDB.Marshaler()); err != nil {
return nil, err
}
Cache.Set(utils.CacheStatQueues, tntID, sq, nil,
cacheCommit(transactionID), transactionID)
if cacheWrite {
Cache.Set(utils.CacheStatQueues, tntID, sq, nil,
cacheCommit(transactionID), transactionID)
}
return
}

View File

@@ -99,7 +99,7 @@ func testDMitCRUDStatQueue(t *testing.T) {
},
},
}
if _, rcvErr := dm2.GetStatQueue(sq.Tenant, sq.ID, false, ""); rcvErr != utils.ErrNotFound {
if _, rcvErr := dm2.GetStatQueue(sq.Tenant, sq.ID, true, false, ""); rcvErr != utils.ErrNotFound {
t.Error(rcvErr)
}
if _, ok := Cache.Get(utils.CacheStatQueues, sq.TenantID()); ok != false {
@@ -111,7 +111,7 @@ func testDMitCRUDStatQueue(t *testing.T) {
if _, ok := Cache.Get(utils.CacheStatQueues, sq.TenantID()); ok != false {
t.Error("should not be in cache")
}
if rcv, err := dm2.GetStatQueue(sq.Tenant, sq.ID, false, ""); err != nil {
if rcv, err := dm2.GetStatQueue(sq.Tenant, sq.ID, true, false, ""); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(sq, rcv) {
t.Errorf("expecting: %v, received: %v", sq, rcv)
@@ -125,7 +125,7 @@ func testDMitCRUDStatQueue(t *testing.T) {
if _, ok := Cache.Get(utils.CacheStatQueues, sq.TenantID()); ok != false {
t.Error("should not be in cache")
}
if _, rcvErr := dm2.GetStatQueue(sq.Tenant, sq.ID, false, ""); rcvErr != utils.ErrNotFound {
if _, rcvErr := dm2.GetStatQueue(sq.Tenant, sq.ID, true, false, ""); rcvErr != utils.ErrNotFound {
t.Error(rcvErr)
}
}

View File

@@ -2029,7 +2029,7 @@ func testOnStorITStatQueue(t *testing.T) {
},
}
if _, rcvErr := onStor.GetStatQueue(sq.Tenant, sq.ID,
false, utils.NonTransactional); rcvErr != utils.ErrNotFound {
true, false, utils.NonTransactional); rcvErr != utils.ErrNotFound {
t.Error(rcvErr)
}
if err := onStor.SetStatQueue(sq); err != nil {
@@ -2037,14 +2037,14 @@ func testOnStorITStatQueue(t *testing.T) {
}
//get from cache
if rcv, err := onStor.GetStatQueue(sq.Tenant,
sq.ID, false, utils.NonTransactional); err != nil {
sq.ID, true, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(sq, rcv) {
t.Errorf("Expecting: %v, received: %v", sq, rcv)
}
//get from database
if rcv, err := onStor.GetStatQueue(sq.Tenant,
sq.ID, true, utils.NonTransactional); err != nil {
sq.ID, false, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(sq, rcv) {
t.Errorf("Expecting: %v, received: %v", sq, rcv)
@@ -2073,14 +2073,14 @@ func testOnStorITStatQueue(t *testing.T) {
time.Sleep(sleepDelay)
//get from cache
if rcv, err := onStor.GetStatQueue(sq.Tenant,
sq.ID, false, utils.NonTransactional); err != nil {
sq.ID, true, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(sq, rcv) {
t.Errorf("Expecting: %v, received: %v", sq, rcv)
}
//get from database
if rcv, err := onStor.GetStatQueue(sq.Tenant,
sq.ID, true, utils.NonTransactional); err != nil {
sq.ID, false, false, utils.NonTransactional); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(sq, rcv) {
t.Errorf("Expecting: %v, received: %v", sq, rcv)
@@ -2091,12 +2091,12 @@ func testOnStorITStatQueue(t *testing.T) {
}
//check cache if removed
if _, rcvErr := onStor.GetStatQueue(sq.Tenant,
sq.ID, false, utils.NonTransactional); rcvErr != utils.ErrNotFound {
sq.ID, true, false, utils.NonTransactional); rcvErr != utils.ErrNotFound {
t.Error(rcvErr)
}
//check database if removed
if _, rcvErr := onStor.GetStatQueue(sq.Tenant,
sq.ID, true, utils.NonTransactional); rcvErr != utils.ErrNotFound {
sq.ID, false, false, utils.NonTransactional); rcvErr != utils.ErrNotFound {
t.Error(rcvErr)
}
}

View File

@@ -178,7 +178,7 @@ func (sS *StatService) matchingStatQueuesForEvent(args *StatsArgsProcessEvent) (
}
lkID := utils.StatQueuePrefix + utils.ConcatenatedKey(sqPrfl.Tenant, sqPrfl.ID)
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lkID)
s, err := sS.dm.GetStatQueue(sqPrfl.Tenant, sqPrfl.ID, false, "")
s, err := sS.dm.GetStatQueue(sqPrfl.Tenant, sqPrfl.ID, true, true, "")
guardian.Guardian.UnguardIDs(lkID)
if err != nil {
return nil, err
@@ -336,7 +336,7 @@ func (sS *StatService) V1GetQueueStringMetrics(args *utils.TenantID, reply *map[
lkID := utils.StatQueuePrefix + args.TenantID()
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lkID)
defer guardian.Guardian.UnguardIDs(lkID)
sq, err := sS.dm.GetStatQueue(args.Tenant, args.ID, false, "")
sq, err := sS.dm.GetStatQueue(args.Tenant, args.ID, true, true, "")
if err != nil {
if err != utils.ErrNotFound {
err = utils.NewErrServerError(err)
@@ -359,7 +359,7 @@ func (sS *StatService) V1GetQueueFloatMetrics(args *utils.TenantID, reply *map[s
lkID := utils.StatQueuePrefix + args.TenantID()
guardian.Guardian.GuardIDs(config.CgrConfig().LockingTimeout, lkID)
defer guardian.Guardian.UnguardIDs(lkID)
sq, err := sS.dm.GetStatQueue(args.Tenant, args.ID, false, "")
sq, err := sS.dm.GetStatQueue(args.Tenant, args.ID, true, true, "")
if err != nil {
if err != utils.ErrNotFound {
err = utils.NewErrServerError(err)

View File

@@ -69,7 +69,7 @@ func (m *Migrator) migrateCurrentStats() (err error) {
}
for _, id := range ids {
idg := strings.TrimPrefix(id, utils.StatQueuePrefix+tenant+":")
sgs, err := m.dmIN.DataManager().GetStatQueue(tenant, idg, true, utils.NonTransactional)
sgs, err := m.dmIN.DataManager().GetStatQueue(tenant, idg, false, false, utils.NonTransactional)
if err != nil {
return err
}

View File

@@ -268,7 +268,7 @@ func testStsITMigrateAndMove(t *testing.T) {
t.Errorf("Expecting: %+v, received: %+v", len(filter.Rules), len(result1.Rules))
}
result2, err := stsMigrator.dmOut.DataManager().GetStatQueue("cgrates.org", sq.ID, true, utils.NonTransactional)
result2, err := stsMigrator.dmOut.DataManager().GetStatQueue("cgrates.org", sq.ID, false, false, utils.NonTransactional)
if err != nil {
t.Error("Error when getting Stats ", err.Error())
}
@@ -296,7 +296,7 @@ func testStsITMigrateAndMove(t *testing.T) {
if err != nil {
t.Error("Error when getting Stats ", err.Error())
}
result1, err := stsMigrator.dmOut.DataManager().GetStatQueue(sq.Tenant, sq.ID, true, utils.NonTransactional)
result1, err := stsMigrator.dmOut.DataManager().GetStatQueue(sq.Tenant, sq.ID, false, false, utils.NonTransactional)
if err != nil {
t.Error("Error when getting Stats ", err.Error())
}