# INTERNAL: grpc: Channel connectivity watch failed: Too many pending watches

- **ID:** `grpc/channel-connectivity-watch-failure`
- **Domain:** grpc
- **Category:** resource_error
- **Verification:** ai_generated
- **Fix Rate:** 85%

## Root Cause

Too many concurrent connectivity watches were registered on the same channel, exceeding the internal limit.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| gRPC C++ 1.52.0 | active | — | — |
| gRPC Core 1.53.0 | active | — | — |

## Workarounds

1. **Limit the number of concurrent watches per channel. In C++, use `channel->GetState(true)` instead of multiple `NotifyOnStateChange` calls.** (85% success)
   ```
   Limit the number of concurrent watches per channel. In C++, use `channel->GetState(true)` instead of multiple `NotifyOnStateChange` calls.
   ```
2. **Increase the limit via `GRPC_ARG_MAX_PENDING_WATCHES` (if available) or use a separate channel per watch group.** (75% success)
   ```
   Increase the limit via `GRPC_ARG_MAX_PENDING_WATCHES` (if available) or use a separate channel per watch group.
   ```

## Dead Ends

- **** — The limit is per channel; creating more channels may exhaust other resources. (50% fail)
- **** — This reduces the timeout but does not prevent the limit from being hit. (70% fail)
- **** — The watch failure may cause missed connectivity changes, leading to RPC failures. (80% fail)
