• erio's avatar
    fix(antigravity): fast-fail on proxy unavailable, temp-unschedule account · 528ff5d2
    erio authored
    ## Problem
    
    When a proxy is unreachable, token refresh retries up to 4 times with
    30s timeout each, causing requests to hang for ~2 minutes before
    failing with a generic 502 error. The failed account is not marked,
    so subsequent requests keep hitting it.
    
    ## Changes
    
    ### Proxy connection fast-fail
    - Set TCP dial timeout to 5s and TLS handshake timeout to 5s on
      antigravity client, so proxy connectivity issues fail within 5s
      instead of 30s
    - Reduce overall HTTP client timeout from 30s to 10s
    - Export `IsConnectionError` for service-layer use
    - Detect proxy connection errors in `RefreshToken` and return
      immediately with "proxy unavailable" error (no retries)
    
    ### Token refresh temp-unschedulable
    - Add 8s context timeout for token refresh on request path
    - Mark account as temp-unschedulable for 10min when refresh fails
      (both background `TokenRefreshService` and request-path
      `GetAccessToken`)
    - Sync temp-unschedulable state to Redis cache for immediate
      scheduler effect
    - Inject `TempUnschedCache` into `AntigravityTokenProvider`
    
    ### Account failover
    - Return `UpstreamFailoverError` on `GetAccessToken` failure in
      `Forward`/`ForwardGemini` to trigger handler-level account switch
      instead of returning 502 directly
    
    ### Proxy probe alignment
    - Apply same 5s dial/TLS timeout to shared `httpclient` pool
    - Reduce proxy probe timeout from 30s to 10s
    528ff5d2
pool.go 6.39 KB