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

Complete & commit current task(s) on rebalance #2463

Merged
merged 5 commits into from
Oct 27, 2023
Merged

Conversation

francoisferrand
Copy link
Contributor

Implement rebalance callback, so that we will now properly handle the rebalance process at
application level, and thus avoid extra rebalances or processing the same entry multiple times:

  • On unassign, wait until current tasks are complete, by draining the queue;
  • Then explicitely commit, to ensure the persisted timely (since we are usually relying on a
    auto-commit timer, which may happen at any time in the process)
  • Finally call the unassign() method of consumer to let the cluster sync and proceed with the
    rebalance.

We are expected (by kafka) to do this whole process within max.poll.interval.ms (default 5min),
similar to how we are expected to poll periodically. This should be fine in general, except in case
of a bug where a task is really stuck. In that case, the consumer will get kicked out of the
cluster, and commit may fail. If tasks eventually unblock, the consumer will reconnect to the
cluster on next call to consume(), which will trigger a rebalance. There is no guard yet against
this, and we keep the same behavior as before in those cases.

  • Store offset in BackbeatConsumer bootstrap
  • Add kafka consumer rebalance test
  • Drain the queue on rebalance
  • Commit before unassigning
  • Fix BackbeatConsumer breakbeat tests

Issue: BB-441

The purpose of bootstrap is to ensure the consumer receives next
messages: i.e. that the offset is already stored, so that we get every
later message.

For this to work, the offset needs to be comitted: since however we are
not using the `auto.offset.store`, we must manually store the offset.

Issue: BB-441
@bert-e
Copy link
Contributor

bert-e commented Oct 25, 2023

Hello francoisferrand,

My role is to assist you with the merge of this
pull request. Please type @bert-e help to get information
on this process, or consult the user documentation.

Status report is not available.

This should ensure the offsets are stored (and commited) on rebalance.

Issue: BB-441
The tests used to run setup hooks in parallel, so both consumers could
"see" the bootstrap message, causing the test to fail.

Also, we need to push some messages: otherwise we cannot see that
breakbeat is really "blocking" the consumption.

Issue: BB-441
@bert-e
Copy link
Contributor

bert-e commented Oct 25, 2023

Request integration branches

Waiting for integration branch creation to be requested by the user.

To request integration branches, please comment on this pull request with the following command:

/create_integration_branches

Alternatively, the /approve and /create_pull_requests commands will automatically
create the integration branches.

Copy link

@fmonjalet fmonjalet left a comment

Choose a reason for hiding this comment

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

No question to ask in the end, the code answered it itself!

lib/BackbeatConsumer.js Show resolved Hide resolved
@francoisferrand
Copy link
Contributor Author

/approve

@bert-e
Copy link
Contributor

bert-e commented Oct 27, 2023

Integration data created

I have created the integration data for the additional destination branches.

  • this pull request will merge bugfix/BB-441 into
    development/8.6
  • w/8.7/bugfix/BB-441 will be merged into development/8.7

The following branches will NOT be impacted:

  • development/7.10
  • development/7.4
  • development/7.70
  • development/8.5

You can set option create_pull_requests if you need me to create
integration pull requests in addition to integration branches, with:

@bert-e create_pull_requests

The following options are set: approve

@bert-e
Copy link
Contributor

bert-e commented Oct 27, 2023

In the queue

The changeset has received all authorizations and has been added to the
relevant queue(s). The queue(s) will be merged in the target development
branch(es) as soon as builds have passed.

The changeset will be merged in:

  • ✔️ development/8.6

  • ✔️ development/8.7

The following branches will NOT be impacted:

  • development/7.10
  • development/7.4
  • development/7.70
  • development/8.5

There is no action required on your side. You will be notified here once
the changeset has been merged. In the unlikely event that the changeset
fails permanently on the queue, a member of the admin team will
contact you to help resolve the matter.

IMPORTANT

Please do not attempt to modify this pull request.

  • Any commit you add on the source branch will trigger a new cycle after the
    current queue is merged.
  • Any commit you add on one of the integration branches will be lost.

If you need this pull request to be removed from the queue, please contact a
member of the admin team now.

The following options are set: approve

@bert-e
Copy link
Contributor

bert-e commented Oct 27, 2023

I have successfully merged the changeset of this pull request
into targetted development branches:

  • ✔️ development/8.6

  • ✔️ development/8.7

The following branches have NOT changed:

  • development/7.10
  • development/7.4
  • development/7.70
  • development/8.5

Please check the status of the associated issue BB-441.

Goodbye francoisferrand.

@bert-e bert-e merged commit f92d871 into development/8.6 Oct 27, 2023
4 checks passed
@bert-e bert-e deleted the bugfix/BB-441 branch October 27, 2023 15:21
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.

5 participants