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{