Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Offset committing should take into consideration pending retransmissions #1618

Open
faderskd opened this issue Nov 14, 2022 · 0 comments
Open

Comments

@faderskd
Copy link
Contributor

Consider the following situation:

  1. User makes a retransmission on a subscription.
  2. Hermes management creates special zookeeper nodes indicating new kafka offset for each consumer.
  3. Proper hermes consumers are notified and start the retransmission operation:
    a) seek to the specific offset
    b) remove node created in point 2.
    c) and start consuming from that offset on a kafka partition.
  4. Hermes consumer process handling the partition dies and spawn once again before committing the older offset (ensued from retransmission).
  5. The new hermes consumer starts consuming from the last committed offset on partition - which is the newest offset committed before the retransmission even happened.
  6. Hermes consumer ignores the events related to retransmission.

In this case the events related to retransmission are ignored even if hermes management returned 200 to the user. To avoid this issue, we need to check if there is any pending retransmission before committing the offset. If there is, we should retry the retransmission. Once the retransmission is done we remove nodes with retransmission offsets for consumers.

@faderskd faderskd changed the title Offset committing should take into consideration pending retransmissions. Offset committing should take into consideration pending retransmissions Nov 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant