mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-15 21:29:52 +05:00
Control dirty flag in StatQueue needing to be stored
This commit is contained in:
@@ -240,21 +240,7 @@ func testV1STSProcessEvent(t *testing.T) {
|
||||
}
|
||||
|
||||
func testV1STSGetStatsAfterRestart(t *testing.T) {
|
||||
expectedMetrics := map[string]string{
|
||||
utils.MetaASR: "66.66667%",
|
||||
utils.MetaACD: "1m30s",
|
||||
utils.MetaACC: "61.5",
|
||||
utils.MetaTCD: "3m0s",
|
||||
utils.MetaTCC: "123",
|
||||
utils.MetaPDD: "4s",
|
||||
}
|
||||
var metrics map[string]string
|
||||
//get stats metrics before restart
|
||||
if err := stsV1Rpc.Call("StatSV1.GetQueueStringMetrics", &utils.TenantID{Tenant: "cgrates.org", ID: "Stats1"}, &metrics); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(expectedMetrics, metrics) {
|
||||
t.Errorf("expecting: %+v, received reply: %s", expectedMetrics, metrics)
|
||||
}
|
||||
time.Sleep(time.Second)
|
||||
if _, err := engine.StopStartEngine(stsV1CfgPath, statsDelay); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -32,8 +32,10 @@ import (
|
||||
|
||||
// NewStatService initializes a StatService
|
||||
func NewStatService(dm *DataManager, storeInterval time.Duration) (ss *StatService, err error) {
|
||||
return &StatService{dm: dm, storeInterval: storeInterval,
|
||||
stopBackup: make(chan struct{})}, nil
|
||||
return &StatService{dm: dm,
|
||||
storeInterval: storeInterval,
|
||||
storedStatQueues: make(utils.StringMap),
|
||||
stopBackup: make(chan struct{})}, nil
|
||||
}
|
||||
|
||||
// StatService builds stats for events
|
||||
@@ -211,6 +213,14 @@ func (sS *StatService) processEvent(ev *StatEvent) (err error) {
|
||||
sq.TenantID(), ev.TenantID(), err.Error()))
|
||||
withErrors = true
|
||||
}
|
||||
if sS.storeInterval == -1 {
|
||||
sS.StoreStatQueue(sq)
|
||||
} else if sq.dirty != nil {
|
||||
*sq.dirty = true // mark it to be saved
|
||||
sS.ssqMux.Lock()
|
||||
sS.storedStatQueues[sq.TenantID()] = true
|
||||
sS.ssqMux.Unlock()
|
||||
}
|
||||
}
|
||||
if withErrors {
|
||||
err = utils.ErrPartiallyExecuted
|
||||
|
||||
Reference in New Issue
Block a user