From 2e9f47c97ccb44760f72f3d58f16a6a5ebf34363 Mon Sep 17 00:00:00 2001 From: Daniel Loreto <279789+loreto@users.noreply.github.com> Date: Wed, 7 Sep 2022 10:41:12 -0500 Subject: [PATCH 1/2] Add failed message --- boxcli/midcobra/telemetry.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/boxcli/midcobra/telemetry.go b/boxcli/midcobra/telemetry.go index a90e5cd490f..54e623aee1a 100644 --- a/boxcli/midcobra/telemetry.go +++ b/boxcli/midcobra/telemetry.go @@ -70,15 +70,19 @@ func (m *telemetryMiddleware) postRun(cmd *cobra.Command, args []string, runErr return // Ignore invalid commands } - trackEvent(segmentClient, &event{ + evt := &event{ AppName: m.opts.AppName, AppVersion: m.opts.AppVersion, Command: subcmd.CommandPath(), CommandArgs: subargs, DeviceID: deviceID(), Duration: time.Since(m.startTime), - Failed: runErr != nil, - }) + } + if runErr != nil { + evt.Failed = true + evt.FailedMsg = runErr.Error() + } + trackEvent(segmentClient, evt) } func deviceID() string { @@ -104,6 +108,7 @@ type event struct { DeviceID string Duration time.Duration Failed bool + FailedMsg string } func trackEvent(client segment.Client, evt *event) { @@ -126,6 +131,7 @@ func trackEvent(client segment.Client, evt *event) { Set("command", evt.Command). Set("command_args", evt.CommandArgs). Set("failed", evt.Failed). + Set("failed_msg", evt.FailedMsg). Set("duration", evt.Duration.Milliseconds()), }) } From 942097725bc1fddd459d3b2eb84978d1c328e82b Mon Sep 17 00:00:00 2001 From: Daniel Loreto <279789+loreto@users.noreply.github.com> Date: Wed, 7 Sep 2022 10:51:24 -0500 Subject: [PATCH 2/2] Send failure message as part of telemetry --- boxcli/midcobra/telemetry.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/boxcli/midcobra/telemetry.go b/boxcli/midcobra/telemetry.go index 54e623aee1a..17aaf0fc726 100644 --- a/boxcli/midcobra/telemetry.go +++ b/boxcli/midcobra/telemetry.go @@ -59,7 +59,11 @@ func (m *telemetryMiddleware) postRun(cmd *cobra.Command, args []string, runErr return } - segmentClient, _ := segment.NewWithConfig(m.opts.TelemetryKey, segment.Config{Verbose: false}) + segmentClient, _ := segment.NewWithConfig(m.opts.TelemetryKey, + segment.Config{ + Verbose: false, + BatchSize: 1, // We're in a short lived program, so batching doesn't make sense + }) defer func() { _ = segmentClient.Close()