Skip to content

Do not commit offsets for past generations if partition not owned#1330

Open
nachogiljaldo wants to merge 4 commits into
segmentio:mainfrom
nachogiljaldo:do_not_commit_offsets_for_past_generations_if_partition_not_owned
Open

Do not commit offsets for past generations if partition not owned#1330
nachogiljaldo wants to merge 4 commits into
segmentio:mainfrom
nachogiljaldo:do_not_commit_offsets_for_past_generations_if_partition_not_owned

Conversation

@nachogiljaldo

Copy link
Copy Markdown
Contributor

This is a skeleton PR aiming for discussion related to #1308

In that issue, I describe how rebalances can lead to a situation where the consumer receiving the partition does not read messages in spite of lag existing (because conn's offset is > than the broker's current offset and there's no new messages coming).

I was aiming to fix it by avoiding commits for past generations, to do so, I add the generation id to the message and when committing, I log an error instead of adding it to the stash if it belongs to a generation < than current.

This has the risk of losing valid commits when the new generation comes (as its associated generation < latest generation.id), however it works because a new generation ends up creating new connections which means uncommitted events are duplicated. It is not that I love it because it works incidentally but it does work as my test shows.

If you have a different / better approach I am happy to explore it if you do explain it a bit.

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@nachogiljaldo nachogiljaldo force-pushed the do_not_commit_offsets_for_past_generations_if_partition_not_owned branch from 89f3edd to 49e263b Compare November 15, 2024 21:03
@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

@nachogiljaldo nachogiljaldo force-pushed the do_not_commit_offsets_for_past_generations_if_partition_not_owned branch from 49e263b to 8091163 Compare November 15, 2024 21:14
@seg-atlantis-prod

Copy link
Copy Markdown

Atlantis commands can't be run on fork pull requests. To enable, set --allow-fork-prs or, to disable this message, set --silence-fork-pr-errors

@seg-atlantis-prod

Copy link
Copy Markdown
Error parsing command: EOF found when expecting closing quote

Comment thread conn.go Outdated
errInvalidWriteTopic = errors.New("writes must NOT set Topic on kafka.Message")
errInvalidWritePartition = errors.New("writes must NOT set Partition on kafka.Message")

undefinedGenerationId int32 = -1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should be const, not var.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the feedback, I applied the suggestion, I would also appreciate feedback on the general approach as well 🙏

@logrusorgru

Copy link
Copy Markdown

@nachogiljaldo , please, if it’s not a problem for you, apply this patch nachogiljaldo#1 . (No changes in logic).

@logrusorgru

Copy link
Copy Markdown

Merging can be performed automatically with 1 approving review.

Interesting, it means maintainers review? Or it can accept my review too?

…_generations_if_partition_not_owned

Rename *Id -> *ID, following Go naming convention.
@nachogiljaldo

Copy link
Copy Markdown
Contributor Author

@nachogiljaldo , please, if it’s not a problem for you, apply this patch nachogiljaldo#1 . (No changes in logic).

Thanks @logrusorgru

Interesting, it means maintainers review? Or it can accept my review too?

I believe a maintainer :(

@M0rdecay

M0rdecay commented Feb 22, 2025

Copy link
Copy Markdown

Hello! Any chances new release will be published with this patch?

UPD 27.02
Okay, using a raw ConsumerGroup like in example helps to avoid this error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants