collab: Report when upstream rate limit is exceeded (#17083)

Marshall Bowers created

This PR makes it so we report a trace when the upstream rate limit is
exceeded.

Release Notes:

- N/A

Change summary

crates/collab/src/llm.rs | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)

Detailed changes

crates/collab/src/llm.rs 🔗

@@ -237,10 +237,22 @@ async fn perform_completion(
             .await
             .map_err(|err| match err {
                 anthropic::AnthropicError::ApiError(ref api_error) => match api_error.code() {
-                    Some(anthropic::ApiErrorCode::RateLimitError) => Error::http(
-                        StatusCode::TOO_MANY_REQUESTS,
-                        "Upstream Anthropic rate limit exceeded.".to_string(),
-                    ),
+                    Some(anthropic::ApiErrorCode::RateLimitError) => {
+                        tracing::info!(
+                            target: "upstream rate limit exceeded",
+                            user_id = claims.user_id,
+                            login = claims.github_user_login,
+                            authn.jti = claims.jti,
+                            is_staff = claims.is_staff,
+                            provider = params.provider.to_string(),
+                            model = model
+                        );
+
+                        Error::http(
+                            StatusCode::TOO_MANY_REQUESTS,
+                            "Upstream Anthropic rate limit exceeded.".to_string(),
+                        )
+                    }
                     Some(anthropic::ApiErrorCode::InvalidRequestError) => {
                         Error::http(StatusCode::BAD_REQUEST, api_error.message.clone())
                     }