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 periodicRecheckPreferredReplicaInterval) 

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.  


Mitigation and resolution

Upgrade the Franz‑go client to v1.20.3 or later, which contains the fix.