# UNAVAILABLE: grpc: load balancing policy "pick_first" not found

- **ID:** `grpc/load-balancing-policy-pick-first-not-found`
- **Domain:** grpc
- **Category:** config_error
- **Verification:** ai_generated
- **Fix Rate:** 90%

## Root Cause

The gRPC client attempted to use a load balancing policy name that is not registered in the binary, often due to missing build tags or policy import.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| gRPC Go 1.65.0 | active | — | — |
| gRPC Python 1.64.0 | active | — | — |
| gRPC Java 1.62.0 | active | — | — |

## Workarounds

1. **In gRPC Go, import the pick_first policy: `import _ "google.golang.org/grpc/balancer/pick_first"` or use `grpc.WithDefaultServiceConfig` to set policy to `"round_robin"` after importing `_ "google.golang.org/grpc/balancer/roundrobin"`** (95% success)
   ```
   In gRPC Go, import the pick_first policy: `import _ "google.golang.org/grpc/balancer/pick_first"` or use `grpc.WithDefaultServiceConfig` to set policy to `"round_robin"` after importing `_ "google.golang.org/grpc/balancer/roundrobin"`
   ```
2. **In gRPC Python, set `grpc.ssl_channel_credentials().load_latest_certificates()` or use a custom resolver that specifies a built-in policy like `round_robin`** (85% success)
   ```
   In gRPC Python, set `grpc.ssl_channel_credentials().load_latest_certificates()` or use a custom resolver that specifies a built-in policy like `round_robin`
   ```

## Dead Ends

- **Change policy name to 'round_robin' without importing the package** — Same missing import issue for 'round_robin' policy. (70% fail)
- **Manually set service config with an unknown policy string** — gRPC validates policy names at startup; invalid names cause same error. (90% fail)
- **Upgrade the gRPC library to latest version without code changes** — The policy must be explicitly imported in code; version upgrade alone doesn't fix. (50% fail)
