Skip to content

Commit

Permalink
Terminate when any goroutine fails in server mode
Browse files Browse the repository at this point in the history
  • Loading branch information
Peter Broadhurst committed Nov 8, 2018
1 parent 10f26e7 commit 8158491
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions cmd/ethconnect.go
Expand Up @@ -20,7 +20,6 @@ import (
"io/ioutil"
"os"
"strings"
"sync"

"gopkg.in/yaml.v2"

Expand Down Expand Up @@ -137,39 +136,40 @@ func startServer() (err error) {
return err
}

anyRoutineFinished := make(chan bool)

var dontPrintYaml = false
var wg sync.WaitGroup
for name, conf := range serverConfig.KafkaBridges {
kafkaBridge := kldkafka.NewKafkaBridge(&dontPrintYaml)
kafkaBridge.SetConf(conf)
if err := kafkaBridge.ValidateConf(); err != nil {
return err
}
wg.Add(1)
go func(name string) {
go func(name string, anyRoutineFinished chan bool) {
log.Infof("Starting Kafka->Ethereum bridge '%s'", name)
if err := kafkaBridge.Start(); err != nil {
log.Errorf("Kafka->Ethereum bridge failed: %s", err)
}
wg.Done()
}(name)
anyRoutineFinished <- true
}(name, anyRoutineFinished)
}
for name, conf := range serverConfig.WebhooksBridges {
webhooksBridge := kldwebhooks.NewWebhooksBridge(&dontPrintYaml)
webhooksBridge.SetConf(conf)
if err := webhooksBridge.ValidateConf(); err != nil {
return err
}
wg.Add(1)
go func(name string) {
go func(name string, anyRoutineFinished chan bool) {
log.Infof("Starting Webhooks->Kafka bridge '%s'", name)
if err := webhooksBridge.Start(); err != nil {
log.Errorf("Webhooks->Kafka bridge failed: %s", err)
}
wg.Done()
}(name)
anyRoutineFinished <- true
}(name, anyRoutineFinished)
}
wg.Wait()

// Terminate when ANY routine fails (do not wait for them all to complete)
<-anyRoutineFinished

return
}
Expand Down

0 comments on commit 8158491

Please sign in to comment.