( logger slog.Logger, client TelemetryClient, event *proto.TelemetryEvent, )
| 772 | ) |
| 773 | |
| 774 | func sendTelemetry( |
| 775 | logger slog.Logger, client TelemetryClient, event *proto.TelemetryEvent, |
| 776 | ) ( |
| 777 | unavailable bool, |
| 778 | ) { |
| 779 | ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) |
| 780 | defer cancel() |
| 781 | _, err := client.PostTelemetry(ctx, &proto.TelemetryRequest{ |
| 782 | Events: []*proto.TelemetryEvent{event}, |
| 783 | }) |
| 784 | if IsDRPCUnimplementedError(err) { |
| 785 | logger.Debug( |
| 786 | context.Background(), |
| 787 | "attempted to send telemetry to a server that doesn't support it", |
| 788 | slog.Error(err), |
| 789 | ) |
| 790 | return true |
| 791 | } else if err != nil { |
| 792 | logger.Warn( |
| 793 | context.Background(), |
| 794 | "failed to post telemetry event", |
| 795 | slog.F("event", event), slog.Error(err), |
| 796 | ) |
| 797 | } |
| 798 | return false |
| 799 | } |
| 800 | |
| 801 | // IsDRPCUnimplementedError returns true if the error indicates the RPC called is not implemented |
| 802 | // by the server. |
no test coverage detected