Offset resets in group consumers due to Franz‑go v1.19.0-> v1.20.2 leader switching bug
Last updated: August 10, 2026
Summary
When using the Franz‑go client library versions 1.19.0–1.20.2 with follower fetch enabled consumer groups may observe apparent offset “resets” and some duplicate messages.
This is caused by a bug in Franz‑go’s follower‑fetch / leader‑switching logic, not by Redpanda itself.
The issue is fixed upstream in Franz‑go v1.20.3.
Affected components
- Product: Redpanda (all editions; client‑side issue)
- Client: Franz‑go
- Franz‑go versions:Affected: 1.19.0–1.20.2
Fixed: 1.20.3 and later
Symptoms
When using Franz‑go 1.19.x and Redpanda follower fetch enabled you may see:
- Consumer groups apparently re-reading already consumed messages (duplicates).
- Offsets that appear to “jump back” after a leader / follower switch.
- This often surfaces after the client has been running for some time (tied to a periodic
RecheckPreferredReplicaInterval)
Root cause (Franz‑go bug)
The bug: In Franz-go 1.19.0 introduced code to, when follower fetching, re-check the preferred replica from the leader every 30 minutes (every RecheckPreferredReplicaInterval).
The logic switched back to a leader after handling a fetch response, using the offset that the fetch request was issued with.
The client would give you data that it just fetched, go back to the leader, and then get redirected back to the follower using the offset from before the fetch it just gave you. You would then receive a bit of duplicate data as the pre-fetch offset is re-fetched.