# ERR Client: subscriber queue full - dropping message

- **ID:** `redis/pubsub-subscriber-queue-full`
- **Domain:** redis
- **Category:** resource_error
- **Error Code:** `ERM`
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

A Pub/Sub subscriber client's output buffer is full, causing Redis to drop messages to prevent the client from being disconnected.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Redis 6.2.0 | active | — | — |
| Redis 7.0.0 | active | — | — |
| Redis 7.2.0 | active | — | — |

## Workarounds

1. **Increase the client output buffer limit for Pub/Sub clients: CONFIG SET client-output-buffer-limit pubsub 32mb 8mb 60. This provides more headroom for message bursts.** (85% success)
   ```
   Increase the client output buffer limit for Pub/Sub clients: CONFIG SET client-output-buffer-limit pubsub 32mb 8mb 60. This provides more headroom for message bursts.
   ```
2. **Implement backpressure in the subscriber: use a message queue (e.g., Redis list) to buffer messages asynchronously. Example in Python: import redis; r = redis.Redis(); pubsub = r.pubsub(); pubsub.subscribe('channel'); for msg in pubsub.listen(): r.rpush('buffer', msg['data'])** (90% success)
   ```
   Implement backpressure in the subscriber: use a message queue (e.g., Redis list) to buffer messages asynchronously. Example in Python: import redis; r = redis.Redis(); pubsub = r.pubsub(); pubsub.subscribe('channel'); for msg in pubsub.listen(): r.rpush('buffer', msg['data'])
   ```
3. **Add more subscriber instances to distribute the load: run multiple worker processes each subscribing to a subset of channels.** (80% success)
   ```
   Add more subscriber instances to distribute the load: run multiple worker processes each subscribing to a subset of channels.
   ```

## Dead Ends

- **** — Setting an unlimited buffer can cause Redis to run out of memory, leading to OOM kills or performance degradation. (85% fail)
- **** — Disabling processing does not address the queue full issue; the client will still fail to consume messages fast enough. (60% fail)
- **** — A single subscriber handling many channels increases message volume per client, worsening the queue full condition. (70% fail)
