diff --git a/cmd/cgr-rater/scheduler.go b/cmd/cgr-rater/scheduler.go index 38a7eb2a7..0af41d190 100644 --- a/cmd/cgr-rater/scheduler.go +++ b/cmd/cgr-rater/scheduler.go @@ -76,6 +76,7 @@ func loadActionTimings(storage timespans.StorageGetter) { for i, at := range ats { toBeSaved = toBeSaved || at.CheckForASAP() if at.IsOneTimeRun() { + timespans.Logger.Info(fmt.Sprintf("Time for one time action on %v", at) go at.Execute() // remove it from list ats = append(ats[:i], ats[i+1:]...) diff --git a/timespans/storage_map.go b/timespans/storage_map.go index 48d4888c3..1f51195f2 100644 --- a/timespans/storage_map.go +++ b/timespans/storage_map.go @@ -112,6 +112,11 @@ func (ms *MapStorage) GetActionTimings(key string) (ats []*ActionTiming, err err } func (ms *MapStorage) SetActionTimings(key string, ats []*ActionTiming) (err error) { + if len(ats) == 0 { + // delete the key + delete(ms.dict, key) + return + } result, err := ms.ms.Marshal(ats) ms.dict[key] = result return diff --git a/timespans/storage_redis.go b/timespans/storage_redis.go index 927f8e714..7792b3809 100644 --- a/timespans/storage_redis.go +++ b/timespans/storage_redis.go @@ -112,6 +112,11 @@ func (rs *RedisStorage) GetActionTimings(key string) (ats []*ActionTiming, err e } func (rs *RedisStorage) SetActionTimings(key string, ats []*ActionTiming) (err error) { + if len(ats) == 0 { + // delete the key + _, err = rs.db.Del(key) + return + } result, err := rs.ms.Marshal(ats) return rs.db.Set(key, result) }