-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
tasks: add tablet resize virtual task #21891
base: master
Are you sure you want to change the base?
Conversation
|
|
|
|
🔴 CI State: FAILURE✅ - Build Failed Tests (5/291):
Build Details:
|
|
🔴 CI State: FAILURE✅ - Build Failed Tests (7/291):
Build Details:
|
|
|
🔴 CI State: FAILURE✅ - Build Failed Tests (2/647):Build Details:
|
Add resize_task_info static column to system.tablets. Set or delete resize_task_info value when the resize_decision is changed. Reflect the column content in tablet_map.
Move an implementation of node_ops::task_manager_module::get_nodes to task_manager::get_nodes, so that it can be reused by other modules.
Extend tablet_virtual_task::get_stats to list resize tasks.
Extend tablet_virtual_task::contains to check resize operations. Methods that do not support resize tasks return immediately if they are handling split or merge task.
Extend tablet_virtual_task::get_status to cover resize tasks.
Add suspended task state. It will be used for revoke resize requests.
Extend tablet_virtual_task::wait to support resize tasks. To decide what is a state of a finished resize virtual task (done or failed), the tablet count is checked. The task state is set to done, if the tablet count before resize is different than after.
Set resize tasks as non abortable.
Initialize shard in task_info constructor. All current usages do not care about the shard of an empty task_info. In the following patches we may need that for setting info about virtual task parent.
Currently, streaming_task_impl is the only existing child of any virtual task. It overrides the is_internal definition so that it is non-internal even though it has a parent. This should apply to all children of all virtual tasks. Modify task_manager::task::impl::is_internal so that children of virtual tasks aren't internal by default.
Pass task_info down to storage_group::split. In the following patches, it will be used to set the parent of offstrategy_compaction_task_executor and split_compaction_task_executor running as a part of the split. The task_info param will contain task info of a split virtual task.
offstrategy_compaction_task_executor and split_compaction_task_executor running as a part of the split become children of a split virtual task.
The test is skipped in debug mode, because the preparation of revoke takes too long and wait request, which needs to be started before the preparation, hits timeout.
🔴 CI State: FAILURE✅ - Build Failed Tests (2/40128):Build Details:
|
In this change, tablet_virtual_task starts supporting tablet
resize (i.e. split and merge).
Users can see running resize tasks - finished tasks are not
presented with the task manager API.
A new task state "suspended" is added. If a resize was revoked,
it will appear to users as suspended. We assume that the resize was revoked
when the tablet number didn't change.
Fixes: #21366.
Fixes: #21367.
No backport, new feature