From 5dd96f2a0993267fab865f3fdcd344372f49504a Mon Sep 17 00:00:00 2001 From: alin104n Date: Mon, 20 Mar 2017 20:39:55 +0200 Subject: [PATCH] Mongo counter fix --- engine/storage_mongo_datadb.go | 2 +- engine/storage_mongo_stordb.go | 2 +- utils/coreutils.go | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index 7889d7a26..cb172108e 100644 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -112,7 +112,7 @@ func NewMongoStorage(host, port, db, user, pass, storageType string, cdrsIndexes return nil, err } } - ms.cnter = utils.NewCounterGen(1000) + ms.cnter = utils.NewCounterGen(0) return } diff --git a/engine/storage_mongo_stordb.go b/engine/storage_mongo_stordb.go index 3791d60d7..30eb49feb 100644 --- a/engine/storage_mongo_stordb.go +++ b/engine/storage_mongo_stordb.go @@ -883,7 +883,7 @@ func (ms *MongoStorage) GetSMCosts(cgrid, runid, originHost, originIDPrefix stri func (ms *MongoStorage) SetCDR(cdr *CDR, allowUpdate bool) (err error) { if cdr.OrderID == 0 { - cdr.OrderID = time.Now().UnixNano() + ms.cnter.Gen() + cdr.OrderID = ms.cnter.Gen() } session, col := ms.conn(utils.TBL_CDRS) defer session.Close() diff --git a/utils/coreutils.go b/utils/coreutils.go index bdd1d6624..c8996c748 100644 --- a/utils/coreutils.go +++ b/utils/coreutils.go @@ -41,7 +41,10 @@ import ( ) func NewCounterGen(limit int64) *CounterGen { - return &CounterGen{limit: limit} + return &CounterGen{ + cnt: time.Now().UnixNano(), + limit: limit, + } } type CounterGen struct { @@ -53,7 +56,7 @@ func (cg *CounterGen) Gen() int64 { cg.Lock() defer cg.Unlock() cg.cnt += 1 - if cg.cnt > cg.limit { + if cg.limit > 0 && cg.cnt > cg.limit { cg.cnt = 0 } return cg.cnt