26#ifndef METADATA_CACHE_METADATA_CACHE_INCLUDED
27#define METADATA_CACHE_METADATA_CACHE_INCLUDED
75 const unsigned router_id,
const std::string &clusterset_id,
76 const std::vector<mysql_harness::TcpDestination> &metadata_servers,
77 std::shared_ptr<MetaData> cluster_metadata,
83 bool use_cluster_notifications =
false,
84 bool close_connection_after_refresh =
false);
138 bool wait_primary_failover(
const std::string &
server_uuid,
142 void refresh_thread();
145 static void *run_thread(
void *context);
172 void add_acceptor_handler_listener(
181 void remove_acceptor_handler_listener(
189 void add_md_refresh_listener(
198 void remove_md_refresh_listener(
202 return stats_([](
auto const &
stats)
204 return {
stats.refresh_failed,
205 stats.refresh_succeeded,
206 stats.last_refresh_succeeded,
207 stats.last_refresh_failed,
208 stats.last_metadata_server_host,
209 stats.last_metadata_server_port};
218 void enable_fetch_auth_metadata() { auth_metadata_fetch_enabled_ =
true; }
222 void check_auth_metadata_timers()
const;
224 std::pair<bool, MetaData::auth_credentials_t::mapped_type>
225 get_rest_user_auth_data(
const std::string &
user);
231 trigger_acceptor_update_on_next_refresh_ =
true;
234 void add_routing_guidelines_update_callbacks(
238 on_routing_guidelines_change_callback);
240 void clear_routing_guidelines_update_callbacks();
242 void add_router_info_update_callback(
245 void clear_router_info_update_callback();
251 virtual bool refresh(
bool needs_writable_node) = 0;
253 void on_refresh_failed(
bool md_servers_reachable =
false);
254 void on_refresh_succeeded(
259 void on_instances_changed(
const bool md_servers_reachable,
260 uint64_t view_id = 0);
267 void on_handle_sockets_acceptors();
277 void on_md_refresh(
const bool cluster_nodes_changed,
278 const std::string &routing_guidelines_doc);
281 void on_refresh_requested();
284 void on_refresh_completed();
287 bool update_auth_cache();
290 void update_router_attributes();
293 void update_router_last_check_in();
296 void update_reported_routing_guideline_name(
297 const std::string &guideline_name);
299 void update_routing_guidelines(
const std::string &routing_guidelines_doc);
334 bool auth_metadata_fetch_enabled_{
false};
356 std::atomic<bool> terminated_{
false};
358 bool refresh_requested_{
false};
377 std::set<metadata_cache::AcceptorUpdateHandlerInterface *>
379 std::set<metadata_cache::MetadataRefreshListenerInterface *>
382 update_routing_guidelines_callback_{
nullptr};
386 std::vector<metadata_cache::MetadataCacheAPI::update_router_info_callback_t>
392 uint64_t refresh_failed{0};
393 uint64_t refresh_succeeded{0};
401 bool initial_attributes_update_done_{
false};
402 uint32_t periodic_stats_update_counter_{1};
403 std::chrono::steady_clock::time_point last_periodic_stats_update_timestamp_{
404 std::chrono::steady_clock::now()};
406 bool ready_announced_{
false};
412 std::atomic<bool> trigger_acceptor_update_on_next_refresh_{
false};
416 bool needs_initial_attributes_update();
417 bool needs_last_check_in_update();
Monitor pattern.
Definition: monitor.h:39
MySQLRouterThread provides higher level interface to managing threads.
Definition: mysql_router_thread.h:80
Definition: destination.h:40
Definition: cluster_metadata.h:179
static void start(mysql_harness::PluginFuncEnv *env)
Definition: http_auth_backend_plugin.cc:180
static void stop(mysql_harness::PluginFuncEnv *)
Definition: mysql_rest_service_plugin.cc:413
char * user
Definition: mysqladmin.cc:67
char server_uuid[UUID_LENGTH+1]
Definition: mysqld.cc:1508
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:499
std::chrono::seconds seconds
Definition: authorize_manager.cc:71
std::chrono::milliseconds milliseconds
Definition: authorize_manager.cc:70
noexcept
The return type for any call_and_catch(f, args...) call where f(args...) returns Type.
Definition: call_and_catch.h:76
static const size_t kDefaultStackSizeInKiloBytes
Definition: mysql_router_thread.h:44
ClusterType
Definition: cluster_metadata.h:157
ServerMode
Definition: datatypes.h:50
mode
Definition: file_handle.h:61
std::vector< T, ut::allocator< T > > vector
Specialization of vector which uses allocator.
Definition: ut0new.h:2724
SSL connection related options.
Definition: datatypes.h:34
Definition: mysqlslap.cc:243