From 8626aba56d14c1b033683e8f75a96bb8a88b7f55 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 25 Jan 2022 12:19:25 +0100 Subject: [PATCH 1/2] Improve error logging for pluggable monitor --- arduino/monitor/monitor.go | 2 +- commands/monitor/monitor.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/arduino/monitor/monitor.go b/arduino/monitor/monitor.go index 09db6b2bdbf..5184448eda9 100644 --- a/arduino/monitor/monitor.go +++ b/arduino/monitor/monitor.go @@ -111,7 +111,7 @@ func (mon *PluggableMonitor) jsonDecodeLoop(in io.Reader, outChan chan<- *monito if err := decoder.Decode(&msg); err != nil { mon.incomingMessagesError = err close(outChan) - mon.log.Errorf("stopped decode loop") + mon.log.Errorf("stopped decode loop: %s", err) return } mon.log. diff --git a/commands/monitor/monitor.go b/commands/monitor/monitor.go index 49cbab66a93..630b1873730 100644 --- a/commands/monitor/monitor.go +++ b/commands/monitor/monitor.go @@ -28,6 +28,7 @@ import ( "github.com/arduino/arduino-cli/i18n" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "github.com/arduino/go-properties-orderedmap" + "github.com/sirupsen/logrus" ) var tr = i18n.Tr @@ -85,9 +86,12 @@ func Monitor(ctx context.Context, req *rpc.MonitorRequest) (*PortProxy, *pluggab } for _, setting := range req.GetPortConfiguration().Settings { - m.Configure(setting.SettingId, setting.Value) + if err := m.Configure(setting.SettingId, setting.Value); err != nil { + logrus.Errorf("Could not set configuration %s=%s: %s", setting.SettingId, setting.Value, err) + } } + logrus.Infof("Port %s successfully opened", req.GetPort().GetAddress()) return &PortProxy{ rw: monIO, changeSettingsCB: m.Configure, From 206ec5dab479f18658c72993a1efb5e49b36f7f1 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 25 Jan 2022 12:20:38 +0100 Subject: [PATCH 2/2] Force quit of pluggable monitor if the port open fails --- commands/monitor/monitor.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/commands/monitor/monitor.go b/commands/monitor/monitor.go index 630b1873730..3d2995a6b59 100644 --- a/commands/monitor/monitor.go +++ b/commands/monitor/monitor.go @@ -77,11 +77,13 @@ func Monitor(ctx context.Context, req *rpc.MonitorRequest) (*PortProxy, *pluggab descriptor, err := m.Describe() if err != nil { + m.Quit() return nil, nil, &arduino.FailedMonitorError{Cause: err} } monIO, err := m.Open(req.GetPort().GetAddress(), req.GetPort().GetProtocol()) if err != nil { + m.Quit() return nil, nil, &arduino.FailedMonitorError{Cause: err} }