tablets: Introduce get_migration_streaming_info() which works on migration request

Will be used by tablet load balancer to compute impact on load of
planned migrations. Currently, the logic is hard coded in the load
balancer and may get out of sync with the logic we have in
get_migration_streaming_info() for already running tablet transitions.

The logic will become more complex for rebuild transition, so use
shared code to compute it.
This commit is contained in:
Tomasz Grabiec
2024-01-19 12:14:07 +01:00
parent 6dc56fd80b
commit 649ca0e46c
2 changed files with 5 additions and 0 deletions

View File

@@ -79,6 +79,10 @@ tablet_transition_info::tablet_transition_info(tablet_transition_stage stage,
, reads(get_selector_for_reads(stage))
{ }
tablet_migration_streaming_info get_migration_streaming_info(const tablet_info& tinfo, const tablet_migration_info& trinfo) {
return get_migration_streaming_info(tinfo, migration_to_transition_info(tinfo, trinfo));
}
tablet_migration_streaming_info get_migration_streaming_info(const tablet_info& tinfo, const tablet_transition_info& trinfo) {
tablet_migration_streaming_info result = {
.read_from = std::unordered_set<tablet_replica>(tinfo.replicas.begin(), tinfo.replicas.end()),

View File

@@ -220,6 +220,7 @@ struct tablet_migration_streaming_info {
};
tablet_migration_streaming_info get_migration_streaming_info(const tablet_info&, const tablet_transition_info&);
tablet_migration_streaming_info get_migration_streaming_info(const tablet_info&, const tablet_migration_info&);
// Describes if a given token is located at either left or right side of a tablet's range
enum tablet_range_side {