refactor(ops): 完善gateway服务ops集成
This commit is contained in:
@@ -564,6 +564,10 @@ urlFallbackLoop:
|
|||||||
}
|
}
|
||||||
|
|
||||||
upstreamReq, err := antigravity.NewAPIRequestWithURL(ctx, baseURL, action, accessToken, geminiBody)
|
upstreamReq, err := antigravity.NewAPIRequestWithURL(ctx, baseURL, action, accessToken, geminiBody)
|
||||||
|
// Capture upstream request body for ops retry of this attempt.
|
||||||
|
if c != nil {
|
||||||
|
c.Set(OpsUpstreamRequestBodyKey, string(geminiBody))
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -574,7 +578,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: 0,
|
UpstreamStatusCode: 0,
|
||||||
Kind: "request_error",
|
Kind: "request_error",
|
||||||
Message: safeErr,
|
Message: safeErr,
|
||||||
@@ -616,7 +620,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "retry",
|
Kind: "retry",
|
||||||
@@ -647,7 +651,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "retry",
|
Kind: "retry",
|
||||||
@@ -700,7 +704,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "signature_error",
|
Kind: "signature_error",
|
||||||
@@ -744,7 +748,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: 0,
|
UpstreamStatusCode: 0,
|
||||||
Kind: "signature_retry_request_error",
|
Kind: "signature_retry_request_error",
|
||||||
Message: sanitizeUpstreamErrorMessage(retryErr.Error()),
|
Message: sanitizeUpstreamErrorMessage(retryErr.Error()),
|
||||||
@@ -775,7 +779,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: retryResp.StatusCode,
|
UpstreamStatusCode: retryResp.StatusCode,
|
||||||
UpstreamRequestID: retryResp.Header.Get("x-request-id"),
|
UpstreamRequestID: retryResp.Header.Get("x-request-id"),
|
||||||
Kind: kind,
|
Kind: kind,
|
||||||
@@ -823,7 +827,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "failover",
|
Kind: "failover",
|
||||||
@@ -1378,7 +1382,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: 0,
|
UpstreamStatusCode: 0,
|
||||||
Kind: "request_error",
|
Kind: "request_error",
|
||||||
Message: safeErr,
|
Message: safeErr,
|
||||||
@@ -1420,7 +1424,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "retry",
|
Kind: "retry",
|
||||||
@@ -1451,7 +1455,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "retry",
|
Kind: "retry",
|
||||||
@@ -1553,7 +1557,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: requestID,
|
UpstreamRequestID: requestID,
|
||||||
Kind: "failover",
|
Kind: "failover",
|
||||||
@@ -1570,7 +1574,7 @@ urlFallbackLoop:
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: requestID,
|
UpstreamRequestID: requestID,
|
||||||
Kind: "http_error",
|
Kind: "http_error",
|
||||||
|
|||||||
@@ -1450,6 +1450,9 @@ func (s *GatewayService) Forward(ctx context.Context, c *gin.Context, account *A
|
|||||||
for attempt := 1; attempt <= maxRetryAttempts; attempt++ {
|
for attempt := 1; attempt <= maxRetryAttempts; attempt++ {
|
||||||
// 构建上游请求(每次重试需要重新构建,因为请求体需要重新读取)
|
// 构建上游请求(每次重试需要重新构建,因为请求体需要重新读取)
|
||||||
upstreamReq, err := s.buildUpstreamRequest(ctx, c, account, body, token, tokenType, reqModel)
|
upstreamReq, err := s.buildUpstreamRequest(ctx, c, account, body, token, tokenType, reqModel)
|
||||||
|
// Capture upstream request body for ops retry of this attempt.
|
||||||
|
c.Set(OpsUpstreamRequestBodyKey, string(body))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -1491,7 +1494,7 @@ func (s *GatewayService) Forward(ctx context.Context, c *gin.Context, account *A
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "signature_error",
|
Kind: "signature_error",
|
||||||
@@ -1543,7 +1546,7 @@ func (s *GatewayService) Forward(ctx context.Context, c *gin.Context, account *A
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: retryResp.StatusCode,
|
UpstreamStatusCode: retryResp.StatusCode,
|
||||||
UpstreamRequestID: retryResp.Header.Get("x-request-id"),
|
UpstreamRequestID: retryResp.Header.Get("x-request-id"),
|
||||||
Kind: "signature_retry_thinking",
|
Kind: "signature_retry_thinking",
|
||||||
@@ -1572,7 +1575,7 @@ func (s *GatewayService) Forward(ctx context.Context, c *gin.Context, account *A
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: 0,
|
UpstreamStatusCode: 0,
|
||||||
Kind: "signature_retry_tools_request_error",
|
Kind: "signature_retry_tools_request_error",
|
||||||
Message: sanitizeUpstreamErrorMessage(retryErr2.Error()),
|
Message: sanitizeUpstreamErrorMessage(retryErr2.Error()),
|
||||||
@@ -1631,7 +1634,7 @@ func (s *GatewayService) Forward(ctx context.Context, c *gin.Context, account *A
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "retry",
|
Kind: "retry",
|
||||||
@@ -1747,7 +1750,7 @@ func (s *GatewayService) Forward(ctx context.Context, c *gin.Context, account *A
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "failover_on_400",
|
Kind: "failover_on_400",
|
||||||
|
|||||||
@@ -545,13 +545,19 @@ func (s *GeminiMessagesCompatService) Forward(ctx context.Context, c *gin.Contex
|
|||||||
}
|
}
|
||||||
requestIDHeader = idHeader
|
requestIDHeader = idHeader
|
||||||
|
|
||||||
|
// Capture upstream request body for ops retry of this attempt.
|
||||||
|
if c != nil {
|
||||||
|
// In this code path `body` is already the JSON sent to upstream.
|
||||||
|
c.Set(OpsUpstreamRequestBodyKey, string(body))
|
||||||
|
}
|
||||||
|
|
||||||
resp, err = s.httpUpstream.Do(upstreamReq, proxyURL, account.ID, account.Concurrency)
|
resp, err = s.httpUpstream.Do(upstreamReq, proxyURL, account.ID, account.Concurrency)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
safeErr := sanitizeUpstreamErrorMessage(err.Error())
|
safeErr := sanitizeUpstreamErrorMessage(err.Error())
|
||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: 0,
|
UpstreamStatusCode: 0,
|
||||||
Kind: "request_error",
|
Kind: "request_error",
|
||||||
Message: safeErr,
|
Message: safeErr,
|
||||||
@@ -589,7 +595,7 @@ func (s *GeminiMessagesCompatService) Forward(ctx context.Context, c *gin.Contex
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: upstreamReqID,
|
UpstreamRequestID: upstreamReqID,
|
||||||
Kind: "signature_error",
|
Kind: "signature_error",
|
||||||
@@ -664,7 +670,7 @@ func (s *GeminiMessagesCompatService) Forward(ctx context.Context, c *gin.Contex
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: upstreamReqID,
|
UpstreamRequestID: upstreamReqID,
|
||||||
Kind: "retry",
|
Kind: "retry",
|
||||||
@@ -714,7 +720,7 @@ func (s *GeminiMessagesCompatService) Forward(ctx context.Context, c *gin.Contex
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: upstreamReqID,
|
UpstreamRequestID: upstreamReqID,
|
||||||
Kind: "failover",
|
Kind: "failover",
|
||||||
@@ -741,7 +747,7 @@ func (s *GeminiMessagesCompatService) Forward(ctx context.Context, c *gin.Contex
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: upstreamReqID,
|
UpstreamRequestID: upstreamReqID,
|
||||||
Kind: "failover",
|
Kind: "failover",
|
||||||
@@ -977,13 +983,19 @@ func (s *GeminiMessagesCompatService) ForwardNative(ctx context.Context, c *gin.
|
|||||||
}
|
}
|
||||||
requestIDHeader = idHeader
|
requestIDHeader = idHeader
|
||||||
|
|
||||||
|
// Capture upstream request body for ops retry of this attempt.
|
||||||
|
if c != nil {
|
||||||
|
// In this code path `body` is already the JSON sent to upstream.
|
||||||
|
c.Set(OpsUpstreamRequestBodyKey, string(body))
|
||||||
|
}
|
||||||
|
|
||||||
resp, err = s.httpUpstream.Do(upstreamReq, proxyURL, account.ID, account.Concurrency)
|
resp, err = s.httpUpstream.Do(upstreamReq, proxyURL, account.ID, account.Concurrency)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
safeErr := sanitizeUpstreamErrorMessage(err.Error())
|
safeErr := sanitizeUpstreamErrorMessage(err.Error())
|
||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: 0,
|
UpstreamStatusCode: 0,
|
||||||
Kind: "request_error",
|
Kind: "request_error",
|
||||||
Message: safeErr,
|
Message: safeErr,
|
||||||
@@ -1042,7 +1054,7 @@ func (s *GeminiMessagesCompatService) ForwardNative(ctx context.Context, c *gin.
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: upstreamReqID,
|
UpstreamRequestID: upstreamReqID,
|
||||||
Kind: "retry",
|
Kind: "retry",
|
||||||
@@ -1127,7 +1139,7 @@ func (s *GeminiMessagesCompatService) ForwardNative(ctx context.Context, c *gin.
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: requestID,
|
UpstreamRequestID: requestID,
|
||||||
Kind: "failover",
|
Kind: "failover",
|
||||||
@@ -1151,7 +1163,7 @@ func (s *GeminiMessagesCompatService) ForwardNative(ctx context.Context, c *gin.
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: requestID,
|
UpstreamRequestID: requestID,
|
||||||
Kind: "failover",
|
Kind: "failover",
|
||||||
@@ -1177,7 +1189,7 @@ func (s *GeminiMessagesCompatService) ForwardNative(ctx context.Context, c *gin.
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: requestID,
|
UpstreamRequestID: requestID,
|
||||||
Kind: "http_error",
|
Kind: "http_error",
|
||||||
|
|||||||
@@ -631,6 +631,11 @@ func (s *OpenAIGatewayService) Forward(ctx context.Context, c *gin.Context, acco
|
|||||||
proxyURL = account.Proxy.URL()
|
proxyURL = account.Proxy.URL()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Capture upstream request body for ops retry of this attempt.
|
||||||
|
if c != nil {
|
||||||
|
c.Set(OpsUpstreamRequestBodyKey, string(body))
|
||||||
|
}
|
||||||
|
|
||||||
// Send request
|
// Send request
|
||||||
resp, err := s.httpUpstream.Do(upstreamReq, proxyURL, account.ID, account.Concurrency)
|
resp, err := s.httpUpstream.Do(upstreamReq, proxyURL, account.ID, account.Concurrency)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -640,7 +645,7 @@ func (s *OpenAIGatewayService) Forward(ctx context.Context, c *gin.Context, acco
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: 0,
|
UpstreamStatusCode: 0,
|
||||||
Kind: "request_error",
|
Kind: "request_error",
|
||||||
Message: safeErr,
|
Message: safeErr,
|
||||||
@@ -675,7 +680,7 @@ func (s *OpenAIGatewayService) Forward(ctx context.Context, c *gin.Context, acco
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "failover",
|
Kind: "failover",
|
||||||
@@ -836,7 +841,7 @@ func (s *OpenAIGatewayService) handleErrorResponse(ctx context.Context, resp *ht
|
|||||||
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
appendOpsUpstreamError(c, OpsUpstreamErrorEvent{
|
||||||
Platform: account.Platform,
|
Platform: account.Platform,
|
||||||
AccountID: account.ID,
|
AccountID: account.ID,
|
||||||
AccountName: account.Name,
|
AccountName: account.Name,
|
||||||
UpstreamStatusCode: resp.StatusCode,
|
UpstreamStatusCode: resp.StatusCode,
|
||||||
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
UpstreamRequestID: resp.Header.Get("x-request-id"),
|
||||||
Kind: "http_error",
|
Kind: "http_error",
|
||||||
|
|||||||
Reference in New Issue
Block a user