Kafka Error INCONSISTENT_GROUP_PROTOCOL
Error code 23 · Non-retriable Consumer
The group member's supported protocols are incompatible with those of existing members or first group member tried to join with empty protocol type or empty protocol list.
Common Causes
- Rolling deployment with mixed consumer versions where old and new consumers support different partition assignment strategies (e.g., RangeAssignor vs CooperativeStickyAssignor)
- Consumer instances in the same group configured with different 'partition.assignment.strategy' values; the group cannot agree on a protocol
- Kafka Streams application version mismatch: different nodes in the same streams app using different StreamsPartitionAssignor versions
Solutions
- Ensure all consumers in a group use the same 'partition.assignment.strategy'; during migration to CooperativeStickyAssignor, list both old and new strategies during a transitional rolling restart
- For Kafka Streams: ensure all application nodes run the same streams library version; mismatched versions produce incompatible assignor protocols
- Use cooperative rebalancing (CooperativeStickyAssignor) to enable incremental rebalances during rolling upgrades; configure as: partition.assignment.strategy=org.apache.kafka.clients.consumer.CooperativeStickyAssignor
Diagnostic Commands
# Describe consumer group offsets and lag
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group <group> --describe
# Look for rebalance events in logs
grep -E 'InconsistentGroupProtocol|JoinGroup|SyncGroup|protocol' /var/log/kafka/server.log | tail -20
Debugging Kafka errors? Conduktor Console gives you real-time visibility into your cluster. Explore all errors in the Error Decoder.