fixes for cdr stats saving/loading

This commit is contained in:
Radu Ioan Fericean
2015-06-29 13:32:32 +03:00
parent 68ce365435
commit a9d5918514
3 changed files with 5 additions and 1 deletions

View File

@@ -73,9 +73,11 @@ func newQueueSaver(id string, saveInterval time.Duration, sq *StatsQueue, adb Ac
select {
case <-svr.ticker.C:
if svr.sq.IsDirty() {
svr.sq.mux.Lock()
if err := svr.adb.SetCdrStatsQueue(svr.sq); err != nil {
Logger.Err(fmt.Sprintf("Error saving cdr stats queue id %s: %v", id, err))
}
svr.sq.mux.Unlock()
}
case <-svr.stopper:
break

View File

@@ -85,6 +85,8 @@ func (sq *StatsQueue) UpdateConf(conf *CdrStats) {
}
func (sq *StatsQueue) Load(saved *StatsQueue) {
sq.mux.Lock()
defer sq.mux.Unlock()
sq.Cdrs = saved.Cdrs
for key, metric := range saved.Metrics {
if _, exists := sq.Metrics[key]; exists {

View File

@@ -677,7 +677,7 @@ func (rs *RedisStorage) SetAccount(ub *Account) (err error) {
func (rs *RedisStorage) GetCdrStatsQueue(key string) (sq *StatsQueue, err error) {
var values []byte
if values, err = rs.db.Get(utils.CDR_STATS_QUEUE_PREFIX + key); err == nil {
sq = &StatsQueue{}
sq = &StatsQueue{Metrics: make(map[string]Metric)}
err = rs.ms.Unmarshal(values, sq)
}