better handling of cdr replication goroutines

possible fixes the issue #423
This commit is contained in:
Radu Ioan Fericean
2016-05-11 17:29:18 +03:00
parent d1b46344d5
commit bbd41cc8f4

View File

@@ -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(
"<CDRReplicator> 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