Skip to content

Commit cab8675

Browse files
committed
controller/api: introduce get_partition_leader_reconciliation_state
1 parent f8c76ea commit cab8675

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/v/cluster/controller_api.cc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "cluster/partition_balancer_backend.h"
2121
#include "cluster/partition_balancer_rpc_service.h"
2222
#include "cluster/partition_balancer_types.h"
23+
#include "cluster/partition_leaders_table.h"
2324
#include "cluster/partition_manager.h"
2425
#include "cluster/shard_table.h"
2526
#include "cluster/topic_table.h"
@@ -285,6 +286,22 @@ controller_api::get_reconciliation_state(
285286
});
286287
}
287288

289+
ss::future<result<ntp_reconciliation_state>>
290+
controller_api::get_partition_leader_reconciliation_state(
291+
model::ntp ntp, model::timeout_clock::time_point timeout) {
292+
auto leader = _partition_leaders.local().get_leader(ntp);
293+
if (!leader) {
294+
vlog(
295+
clusterlog.debug,
296+
"can't get partition leader for ntp {} to get its reconciliation "
297+
"state",
298+
ntp);
299+
co_return result<ntp_reconciliation_state>(errc::no_leader_controller);
300+
}
301+
co_return co_await get_reconciliation_state(
302+
*leader, std::move(ntp), timeout);
303+
}
304+
288305
ss::future<result<ntp_reconciliation_state>>
289306
controller_api::get_reconciliation_state(
290307
model::node_id id, model::ntp ntp, model::timeout_clock::time_point timeout) {

src/v/cluster/controller_api.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ class controller_api {
6666
ss::future<result<ntp_reconciliation_state>> get_reconciliation_state(
6767
model::node_id, model::ntp, model::timeout_clock::time_point);
6868

69+
ss::future<result<ntp_reconciliation_state>>
70+
get_partition_leader_reconciliation_state(
71+
model::ntp, model::timeout_clock::time_point);
72+
6973
// high level APIs
7074
ss::future<std::error_code> wait_for_topic(
7175
model::topic_namespace_view, model::timeout_clock::time_point);
@@ -107,7 +111,7 @@ class controller_api {
107111
ss::sharded<members_table>& _members;
108112
ss::sharded<partition_balancer_backend>& _partition_balancer;
109113
ss::sharded<partition_manager>& _partition_manager;
110-
[[maybe_unused]] ss::sharded<partition_leaders_table>& _partition_leaders;
114+
ss::sharded<partition_leaders_table>& _partition_leaders;
111115
ss::sharded<ss::abort_source>& _as;
112116
};
113117
} // namespace cluster

0 commit comments

Comments
 (0)