Skip to content

Commit bfd9761

Browse files
committed
controller/api: fetch reconfiguration states from leader
1 parent cab8675 commit bfd9761

File tree

3 files changed

+26
-21
lines changed

3 files changed

+26
-21
lines changed

src/v/cluster/controller_api.cc

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -352,9 +352,9 @@ ss::future<std::error_code> controller_api::wait_for_topic(
352352
}
353353

354354
ss::future<result<chunked_vector<partition_reconfiguration_state>>>
355-
controller_api::get_partitions_reconfiguration_state(
355+
controller_api::get_partitions_leader_reconfiguration_state(
356356
const chunked_vector<model::ntp>& partitions,
357-
model::timeout_clock::time_point) {
357+
model::timeout_clock::time_point timeout) {
358358
auto& updates_in_progress = _topics.local().updates_in_progress();
359359

360360
absl::node_hash_map<model::ntp, partition_reconfiguration_state> states;
@@ -375,21 +375,25 @@ controller_api::get_partitions_reconfiguration_state(
375375
state.state = progress_it->second.get_state();
376376
state.policy = progress_it->second.get_reconfiguration_policy();
377377

378-
auto reconciliation_state = co_await get_reconciliation_state(ntp);
379-
for (auto& operation : reconciliation_state.pending_operations()) {
380-
if (operation.recovery_state) {
381-
state.current_partition_size
382-
= operation.recovery_state->local_size;
383-
for (auto& [id, recovery_state] :
384-
operation.recovery_state->replicas) {
385-
state.replicas.push_back(
386-
replica_bytes{
387-
.node = id,
388-
.bytes_left = recovery_state.bytes_left,
389-
.bytes_transferred = state.current_partition_size
390-
- recovery_state.bytes_left,
391-
.offset = recovery_state.last_offset,
392-
});
378+
auto reconciliation_state
379+
= co_await get_partition_leader_reconciliation_state(ntp, timeout);
380+
if (reconciliation_state.has_value()) {
381+
for (auto& operation :
382+
reconciliation_state.value().pending_operations()) {
383+
if (operation.recovery_state) {
384+
state.current_partition_size
385+
= operation.recovery_state->local_size;
386+
for (auto& [id, recovery_state] :
387+
operation.recovery_state->replicas) {
388+
state.replicas.push_back(
389+
replica_bytes{
390+
.node = id,
391+
.bytes_left = recovery_state.bytes_left,
392+
.bytes_transferred = state.current_partition_size
393+
- recovery_state.bytes_left,
394+
.offset = recovery_state.last_offset,
395+
});
396+
}
393397
}
394398
}
395399
}
@@ -518,7 +522,7 @@ controller_api::get_node_decommission_progress(
518522
// replicas that are moving from decommissioned node are still present on a
519523
// node but their metadata is update, add them explicitly
520524
ret.replicas_left += moving_from_node.size();
521-
auto states = co_await get_partitions_reconfiguration_state(
525+
auto states = co_await get_partitions_leader_reconfiguration_state(
522526
std::move(moving_from_node), timeout);
523527

524528
if (states) {

src/v/cluster/controller_api.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class controller_api {
7575
model::topic_namespace_view, model::timeout_clock::time_point);
7676

7777
ss::future<result<chunked_vector<partition_reconfiguration_state>>>
78-
get_partitions_reconfiguration_state(
78+
get_partitions_leader_reconfiguration_state(
7979
const chunked_vector<model::ntp>&, model::timeout_clock::time_point);
8080
/**
8181
* Returns state of controller backend from each node in the cluster for

src/v/redpanda/admin/partition.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,9 @@ admin_server::get_reconfigurations_handler(std::unique_ptr<ss::http::request>) {
216216

217217
auto [reconfiguration_states, reconciliations]
218218
= co_await ss::when_all_succeed(
219-
_controller->get_api().local().get_partitions_reconfiguration_state(
220-
ntps, deadline),
219+
_controller->get_api()
220+
.local()
221+
.get_partitions_leader_reconfiguration_state(ntps, deadline),
221222
_controller->get_api().local().get_global_reconciliation_state(
222223
ntps, deadline));
223224

0 commit comments

Comments
 (0)