From 4c42f21b03033b2fa0559c77014840817981ed57 Mon Sep 17 00:00:00 2001 From: DanB Date: Fri, 17 Jun 2016 11:16:34 +0200 Subject: [PATCH] CDRS - Cache StoreSMCost for HA setups --- engine/cdrs.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/engine/cdrs.go b/engine/cdrs.go index 82c5ec30c..0fb9b8cf3 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -510,9 +510,18 @@ func (self *CdrServer) V1ProcessCDR(cdr *CDR, reply *string) error { // RPC method, differs from storeSMCost through it's signature func (self *CdrServer) V1StoreSMCost(attr AttrCDRSStoreSMCost, reply *string) error { + cacheKey := "V1StoreSMCost" + attr.Cost.CGRID + attr.Cost.RunID + attr.Cost.OriginID + if item, err := self.getCache().Get(cacheKey); err == nil && item != nil { + if item.Value != nil { + *reply = item.Value.(string) + } + return item.Err + } if err := self.storeSMCost(attr.Cost, attr.CheckDuplicate); err != nil { + self.getCache().Cache(cacheKey, &cache2go.CacheItem{Err: err}) return utils.NewErrServerError(err) } + self.getCache().Cache(cacheKey, &cache2go.CacheItem{Value: utils.OK}) *reply = utils.OK return nil }