summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2016-10-17 16:43:27 +0200
committerChristian Pointner <equinox@spreadspace.org>2016-10-17 16:43:27 +0200
commit109bec1e72285a4b58c7b4b3ae14105c7ffc7e4f (patch)
treeefa274b2bb4d8b525b7ce99ba4804f71816249f3
parentreconnecting to hub works now (diff)
only reconnect after net error
-rw-r--r--src/daq/s5proxy/src/s5proxy/stats.go22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/daq/s5proxy/src/s5proxy/stats.go b/src/daq/s5proxy/src/s5proxy/stats.go
index 2b3c5e2..96ccd74 100644
--- a/src/daq/s5proxy/src/s5proxy/stats.go
+++ b/src/daq/s5proxy/src/s5proxy/stats.go
@@ -187,7 +187,7 @@ func NewStats(conf *Config) (s *Stats, err error) {
return
}
- s.updates = make(chan *DataUpdate, 100)
+ s.updates = make(chan *DataUpdate, 1000)
s.workers = make(map[string]StatsWorker)
var content, format, quality []string
for _, desc := range conf.SFive.Streamer {
@@ -227,15 +227,19 @@ func (s *Stats) sendUpdates() {
upd.Hostname = s.conf.SFive.Hostname
upd.Tags = s.conf.SFive.Tags
upd.Duration = int64(s.conf.SFive.Duration)
- // s5l.Printf("STATS: got data update for '%v'", upd)
if err := s.dataEncoder.Encode(upd); err != nil {
- s5l.Printf("STATS: json encode(): %s", err)
- // TODO: check if error comes from the socket...
- for {
- time.Sleep(5 * time.Second)
- s5l.Printf("STATS: attempting reconnect to hub")
- if err := s.connectToHub(); err == nil {
- break
+ nErr, ok := err.(*net.OpError)
+ if !ok {
+ s5l.Printf("STATS: json encode(): %s", err)
+ } else {
+ if !nErr.Temporary() {
+ for {
+ time.Sleep(5 * time.Second)
+ s5l.Printf("STATS: attempting reconnect to hub")
+ if err := s.connectToHub(); err == nil {
+ break
+ }
+ }
}
}
}