Skip to content

Commit

Permalink
strocon: don't overcommit when making node plan
Browse files Browse the repository at this point in the history
Problem
The fill requirement was not taken into account when looking
through the shards of a given node to fill from.

Summary of Changes:
Ensure that we do not fill a node past the recommendation from
`Scheduler::compute_fill_requirement`.
  • Loading branch information
VladLazar committed Jun 26, 2024
1 parent fdadd6a commit 17bfdd2
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions storage_controller/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5564,9 +5564,12 @@ impl Service {
break;
}

let mut can_take = attached - expected_attached;
let can_take = attached - expected_attached;
let needed = fill_requirement - plan.len();
let mut take = std::cmp::min(can_take, needed);

let mut remove_node = false;
while can_take > 0 {
while take > 0 {
match tids_by_node.get_mut(&node_id) {
Some(tids) => match tids.pop() {
Some(tid) => {
Expand All @@ -5578,7 +5581,7 @@ impl Service {
if *promoted < max_promote_for_tenant {
plan.push(tid);
*promoted += 1;
can_take -= 1;
take -= 1;
}
}
None => {
Expand Down

0 comments on commit 17bfdd2

Please sign in to comment.