From 5dd96f2a0993267fab865f3fdcd344372f49504a Mon Sep 17 00:00:00 2001 From: alin104n Date: Mon, 20 Mar 2017 20:39:55 +0200 Subject: [PATCH 1/2] 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 From d461cfd75acffd646a12333ead41638d104d4a46 Mon Sep 17 00:00:00 2001 From: alin104n Date: Mon, 20 Mar 2017 20:47:28 +0200 Subject: [PATCH 2/2] Mongo counter start param --- engine/storage_mongo_datadb.go | 3 ++- utils/coreutils.go | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/engine/storage_mongo_datadb.go b/engine/storage_mongo_datadb.go index cb172108e..dbebe3d50 100644 --- a/engine/storage_mongo_datadb.go +++ b/engine/storage_mongo_datadb.go @@ -24,6 +24,7 @@ import ( "fmt" "io/ioutil" "strings" + "time" "github.com/cgrates/cgrates/cache" "github.com/cgrates/cgrates/config" @@ -112,7 +113,7 @@ func NewMongoStorage(host, port, db, user, pass, storageType string, cdrsIndexes return nil, err } } - ms.cnter = utils.NewCounterGen(0) + ms.cnter = utils.NewCounterGen(time.Now().UnixNano(), 0) return } diff --git a/utils/coreutils.go b/utils/coreutils.go index c8996c748..45ac42777 100644 --- a/utils/coreutils.go +++ b/utils/coreutils.go @@ -40,9 +40,9 @@ import ( "time" ) -func NewCounterGen(limit int64) *CounterGen { +func NewCounterGen(start, limit int64) *CounterGen { return &CounterGen{ - cnt: time.Now().UnixNano(), + cnt: start, limit: limit, } }