From 9fdd3178203a3e1dc90768b6520ceb492d38e5eb Mon Sep 17 00:00:00 2001 From: Tim Ross Date: Fri, 31 Jan 2025 12:59:17 -0500 Subject: [PATCH] Improve instance join error message This replaces context cancellation messages with a nicer and more intuitive message that folks unfamiliar with Go and gRPC will understand. --- lib/auth/join.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/auth/join.go b/lib/auth/join.go index 3673b128b40db..f762a1ecb5eb4 100644 --- a/lib/auth/join.go +++ b/lib/auth/join.go @@ -23,13 +23,16 @@ import ( "crypto/rand" "encoding/base64" "encoding/json" + "errors" "log/slog" "net" "slices" "strings" "github.com/gravitational/trace" + "google.golang.org/grpc/codes" "google.golang.org/grpc/peer" + "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/structpb" "google.golang.org/protobuf/types/known/timestamppb" @@ -157,10 +160,15 @@ func (a *Server) handleJoinFailure( } a.logger.LogAttrs(ctx, slog.LevelWarn, "Failure to join cluster occurred", attrs...) + errorMessage := origErr.Error() + if errors.Is(origErr, context.Canceled) || status.Code(origErr) == codes.Canceled { + errorMessage = "join attempt timed out or was aborted" + } + var evt apievents.AuditEvent status := apievents.Status{ Success: false, - Error: origErr.Error(), + Error: errorMessage, } if req != nil && req.Role == types.RoleBot { botJoinEvent := &apievents.BotJoin{