From bbd41cc8f492db63f0dca984846e08d760afc056 Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Wed, 11 May 2016 17:29:18 +0300 Subject: [PATCH] better handling of cdr replication goroutines possible fixes the issue #423 --- engine/cdrs.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/engine/cdrs.go b/engine/cdrs.go index 55145e549..c92df610d 100644 --- a/engine/cdrs.go +++ b/engine/cdrs.go @@ -451,7 +451,10 @@ func (self *CdrServer) replicateCdr(cdr *CDR) error { } body = jsn } - errChan := make(chan error) + var errChan chan error + if rplCfg.Synchronous { + errChan = make(chan error) + } go func(body interface{}, rplCfg *config.CdrReplicationCfg, content string, errChan chan error) { fallbackPath := path.Join( self.cgrCfg.HttpFailedDir, @@ -462,10 +465,13 @@ func (self *CdrServer) replicateCdr(cdr *CDR) error { if err != nil { utils.Logger.Err(fmt.Sprintf( " Replicating CDR: %+v, got error: %s", cdr, err.Error())) - errChan <- err + if rplCfg.Synchronous { + errChan <- err + } + } + if rplCfg.Synchronous { + errChan <- nil } - errChan <- nil - }(body, rplCfg, content, errChan) if rplCfg.Synchronous { // Synchronize here <-errChan