From 86f9c39ed83d2cab2d4a69842252266f010b5d0a Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Tue, 14 May 2019 19:47:44 +0200 Subject: [PATCH] Fixed error handling --- monitor_quassel.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/monitor_quassel.go b/monitor_quassel.go index 8764b23..fa5bab9 100644 --- a/monitor_quassel.go +++ b/monitor_quassel.go @@ -1,6 +1,8 @@ package main import ( + "errors" + "fmt" "github.com/sirupsen/logrus" "time" ) @@ -20,6 +22,13 @@ func (m *QuasselMonitor) Config() *ConfigComponent { } func (m *QuasselMonitor) Measure() (Datapoint, error) { + var err error + defer func() { + if r := recover(); r != nil { + err = errors.New(fmt.Sprintf("Caught error: %v", r)) + } + }() + before := time.Now() conn := Connect(ConnectOptions{ ConnectionOptions: ConnectionOptions{ @@ -30,11 +39,15 @@ func (m *QuasselMonitor) Measure() (Datapoint, error) { Verify: !m.config.Quassel.Insecure, }) defer conn.Close() + after := time.Now() latency := int(after.Sub(before).Nanoseconds() / 1000000) + if err == nil { + err = conn.Error() + } - if conn.Error() != nil { - logrus.Infof("Monitor %s: %s", conn.Error()) + if err != nil { + logrus.Infof("Monitor %s: %s", err) return Datapoint{ Time: after, Up: false, -- GitLab