From 9cd07a0a8842c084ed364bc81f6ff5c11126df35 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 11 Mar 2019 16:22:10 +0200 Subject: [PATCH] Updated forceSTerminate and asActiveSessions --- sessions/session.go | 17 ++++++++++++----- sessions/sessions.go | 30 ++++++++++++++---------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/sessions/session.go b/sessions/session.go index 9e60f617b..1b8bdb192 100644 --- a/sessions/session.go +++ b/sessions/session.go @@ -202,15 +202,22 @@ type SRun struct { } // Clone returns the cloned version of SRun -func (sr *SRun) Clone() *SRun { - return &SRun{ - Event: sr.Event.Clone(), - CD: sr.CD.Clone(), - EventCost: sr.EventCost.Clone(), +func (sr *SRun) Clone() (clsr *SRun) { + clsr = &SRun{ + Event: sr.Event.Clone(), + // CD: sr.CD.Clone(), + // EventCost: sr.EventCost.Clone(), ExtraDuration: sr.ExtraDuration, LastUsage: sr.LastUsage, TotalUsage: sr.TotalUsage, } + if sr.CD != nil { + clsr.CD = sr.CD.Clone() + } + if sr.EventCost != nil { + clsr.EventCost = sr.EventCost.Clone() + } + return } // debitReserve attempty to debit from ExtraDuration and returns remaining duration diff --git a/sessions/sessions.go b/sessions/sessions.go index 991d61ad1..5b2595b46 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -377,19 +377,20 @@ func (sS *SessionS) forceSTerminate(s *Session, extraDebit time.Duration, lastUs "<%s> failed force terminating session with ID <%s>, err: <%s>", utils.SessionS, s.CGRid(), err.Error())) } - // Generate CDRs for each session run - var cgrEvs []*utils.CGREvent - if cgrEvs, err = s.AsCGREvents(sS.cgrCfg); err != nil { - utils.Logger.Warning( - fmt.Sprintf( - "<%s> could not create CDRs for session: <%s>, err: <%s>", - utils.SessionS, s.CGRid(), err.Error())) + cgrEv := utils.CGREvent{ + Tenant: s.Tenant, + Event: s.EventStart.AsMapInterface(), } + for _, sr := range s.SRuns { + cgrEv.Event[utils.Usage] = sr.TotalUsage + break + } + // post the CDRs - for _, cgrEv := range cgrEvs { + if sS.cdrS != nil { var reply string if err = sS.cdrS.Call(utils.CDRsV2ProcessCDR, - &engine.ArgV2ProcessCDR{CGREvent: *cgrEv}, &reply); err != nil { + &engine.ArgV2ProcessCDR{CGREvent: cgrEv}, &reply); err != nil { utils.Logger.Warning( fmt.Sprintf( "<%s> could not post CDR for event %s, err: %s", @@ -400,12 +401,9 @@ func (sS *SessionS) forceSTerminate(s *Session, extraDebit time.Duration, lastUs if sS.resS != nil && s.ResourceID != "" { var reply string argsRU := utils.ArgRSv1ResourceUsage{ - CGREvent: utils.CGREvent{ - Tenant: s.Tenant, - Event: s.EventStart.AsMapInterface(), - }, - UsageID: s.ResourceID, - Units: 1, + CGREvent: cgrEv, + UsageID: s.ResourceID, + Units: 1, } if err := sS.resS.Call(utils.ResourceSv1ReleaseResources, argsRU, &reply); err != nil { @@ -905,7 +903,7 @@ func (sS *SessionS) asActiveSessions(fltrs map[string]string, var remainingSessions []*Session // Survived index matching ss := sS.getSessions(fltrs[utils.CGRID], psv) for _, s := range ss { - remainingSessions = append(remainingSessions, s) + remainingSessions = append(remainingSessions, s.Clone()) } if len(fltrs) != 0 { // Still have some filters to match for i := 0; i < len(remainingSessions); {