-
Notifications
You must be signed in to change notification settings - Fork 599
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
fix(meta): fix receiving scheduled command on blocked database #20241
Conversation
7da7d44
to
2b1bf97
Compare
This pull request has been modified. If you want me to regenerate unit test for any of the files related, please find the file in "Files Changed" tab and add a comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this mean we cannot drop stream jobs until db recovered?
No. The stream job will have been removed from catalog before we enqueue the command. The command can still be enqueue, and will take affect either by |
… (#20244) Co-authored-by: William Wen <[email protected]>
… (#20244) Co-authored-by: William Wen <[email protected]>
I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
Discovered in https://buildkite.com/risingwavelabs/main-cron/builds/4257#_
Get the following panic in madsim test.
The assertion is based on the assumption that when a database is in recovery, it should not receive command. We have marked the database as
Blocked
when it enters recovery, so normal command won't be able to add to the command queue. However, we still allowDropXxx
command to be enqueued, and since we didn't prevent polling the queue of the recovering database, we will still receive this command and cause panic in global barrier manager.In this PR, we will change to avoid polling command queue of any blocked database. When the database is marked ready, we will notify on any change subscriber if the database queue is not empty.
Checklist
Documentation
Release note