diff --git a/src/coordination/include/coordination/coordinator_data.hpp b/src/coordination/include/coordination/coordinator_data.hpp index 574d8170a..da4b97b6e 100644 --- a/src/coordination/include/coordination/coordinator_data.hpp +++ b/src/coordination/include/coordination/coordinator_data.hpp @@ -38,6 +38,7 @@ class CoordinatorData { private: mutable utils::RWLock coord_data_lock_{utils::RWLock::Priority::READ}; HealthCheckCallback main_succ_cb_, main_fail_cb_, replica_succ_cb_, replica_fail_cb_; + // Must be std::list because we rely on pointer stability std::list registered_instances_; }; diff --git a/src/query/interpreter.cpp b/src/query/interpreter.cpp index c7f1cc7fa..213e8b86f 100644 --- a/src/query/interpreter.cpp +++ b/src/query/interpreter.cpp @@ -564,21 +564,6 @@ class CoordQueryHandler final : public query::CoordinatorQueryHandler { } } - // TODO: Remove this method, probably not needed. - std::vector ShowMainReplicaStatus( - const std::vector &replicas, - const std::optional &main) const override { - std::vector result{}; - result.reserve(replicas.size() + 1); // replicas + 1 main - std::ranges::transform(replicas, std::back_inserter(result), [](const auto &replica) -> MainReplicaStatus { - return {replica.instance_name, replica.socket_address, replica.is_alive, false}; - }); - if (main) { - result.emplace_back(main->instance_name, main->socket_address, main->is_alive, true); - } - return result; - } - #endif #ifdef MG_ENTERPRISE @@ -1128,16 +1113,19 @@ Callback HandleCoordinatorQuery(CoordinatorQuery *coordinator_query, const Param callback.header = {"name", "socket_address", "alive", "role"}; callback.fn = [handler = CoordQueryHandler{dbms_handler}, replica_nfields = callback.header.size()]() mutable { - const auto result_status = - handler.ShowMainReplicaStatus(handler.ShowReplicasOnCoordinator(), handler.ShowMainOnCoordinator()); + const auto replicas = handler.ShowReplicasOnCoordinator(); + const auto main = handler.ShowMainOnCoordinator(); std::vector> result{}; - result.reserve(result_status.size()); + result.reserve(replicas.size() + 1); - std::ranges::transform(result_status, std::back_inserter(result), - [](const auto &status) -> std::vector { - return {TypedValue{status.name}, TypedValue{status.socket_address}, - TypedValue{status.alive}, TypedValue{status.is_main ? "main" : "replica"}}; - }); + std::ranges::transform(replicas, std::back_inserter(result), [](const auto &status) -> std::vector { + return {TypedValue{status.instance_name}, TypedValue{status.socket_address}, TypedValue{status.is_alive}, + TypedValue{"replica"}}; + }); + if (main) { + result.emplace_back(std::vector{TypedValue{main->instance_name}, TypedValue{main->socket_address}, + TypedValue{main->is_alive}, TypedValue{"main"}}); + } return result; }; return callback; @@ -1161,16 +1149,19 @@ Callback HandleCoordinatorQuery(CoordinatorQuery *coordinator_query, const Param callback.fn = [handler = CoordQueryHandler{dbms_handler}]() mutable { handler.DoFailover(); - const auto result_status = - handler.ShowMainReplicaStatus(handler.ShowReplicasOnCoordinator(), handler.ShowMainOnCoordinator()); + const auto replicas = handler.ShowReplicasOnCoordinator(); + const auto main = handler.ShowMainOnCoordinator(); std::vector> result{}; - result.reserve(result_status.size()); + result.reserve(replicas.size() + 1); - std::ranges::transform(result_status, std::back_inserter(result), - [](const auto &status) -> std::vector { - return {TypedValue{status.name}, TypedValue{status.socket_address}, - TypedValue{status.alive}, TypedValue{status.is_main ? "main" : "replica"}}; - }); + std::ranges::transform(replicas, std::back_inserter(result), [](const auto &status) -> std::vector { + return {TypedValue{status.instance_name}, TypedValue{status.socket_address}, TypedValue{status.is_alive}, + TypedValue{"replica"}}; + }); + if (main) { + result.emplace_back(std::vector{TypedValue{main->instance_name}, TypedValue{main->socket_address}, + TypedValue{main->is_alive}, TypedValue{"main"}}); + } return result; }; diff --git a/src/query/interpreter.hpp b/src/query/interpreter.hpp index b7c05ec6e..96ecea1c5 100644 --- a/src/query/interpreter.hpp +++ b/src/query/interpreter.hpp @@ -125,11 +125,6 @@ class CoordinatorQueryHandler { /// @throw QueryRuntimeException if an error ocurred. virtual void DoFailover() const = 0; - /// @throw QueryRuntimeException if an error ocurred. - virtual std::vector ShowMainReplicaStatus( - const std::vector &replicas, - const std::optional &main) const = 0; - #endif };