![]()  | 
  
    MySQL 9.5.0
    
   Source Code Documentation 
   | 
 
The MetadataCache manages cached information fetched from the MySQL Server. More...
#include <metadata_cache.h>
Classes | |
| struct | RestAuthData | 
| struct | Stats | 
Public Member Functions | |
| MetadataCache (const unsigned router_id, const std::string &clusterset_id, const std::vector< mysql_harness::TcpDestination > &metadata_servers, std::shared_ptr< MetaData > cluster_metadata, const metadata_cache::MetadataCacheTTLConfig &ttl_config, const mysqlrouter::SSLOptions &ssl_options, const mysqlrouter::TargetCluster &target_cluster, const metadata_cache::RouterAttributes &router_attributes, size_t thread_stack_size=mysql_harness::kDefaultStackSizeInKiloBytes, bool use_cluster_notifications=false, bool close_connection_after_refresh=false) | |
| Initialize a connection to the MySQL Metadata server.  More... | |
| ~MetadataCache () override | |
| void | start () | 
| Starts the Metadata Cache.  More... | |
| void | stop () noexcept | 
| Stops the Metadata Cache.  More... | |
| metadata_cache::cluster_nodes_list_t | get_cluster_nodes () | 
| Returns list of managed servers in a cluster.  More... | |
| metadata_cache::ClusterTopology | get_cluster_topology () | 
| Returns object containing current Cluster Topology.  More... | |
| bool | wait_primary_failover (const std::string &server_uuid, const std::chrono::seconds &timeout) | 
| Wait until cluster PRIMARY changes.  More... | |
| void | refresh_thread () | 
| refresh cluster information  More... | |
| void | add_state_listener (metadata_cache::ClusterStateListenerInterface *listener) override | 
| Register observer that is notified when there is a change in the cluster nodes setup/state discovered.  More... | |
| void | remove_state_listener (metadata_cache::ClusterStateListenerInterface *listener) override | 
| Unregister observer previously registered with add_state_listener()  More... | |
| void | add_acceptor_handler_listener (metadata_cache::AcceptorUpdateHandlerInterface *listener) | 
| Register observer that is notified when the state of listening socket acceptors should be updated on the next metadata refresh.  More... | |
| void | remove_acceptor_handler_listener (metadata_cache::AcceptorUpdateHandlerInterface *listener) | 
| Unregister observer previously registered with add_acceptor_handler_listener()  More... | |
| void | add_md_refresh_listener (metadata_cache::MetadataRefreshListenerInterface *listener) | 
| Register observer that is notified on each metadata refresh event.  More... | |
| void | remove_md_refresh_listener (metadata_cache::MetadataRefreshListenerInterface *listener) | 
| Unregister observer previously registered with add_md_refresh_listener()  More... | |
| metadata_cache::MetadataCacheAPIBase::RefreshStatus | refresh_status () | 
| std::chrono::milliseconds | ttl () const | 
| mysqlrouter::TargetCluster | target_cluster () const | 
| virtual mysqlrouter::ClusterType | cluster_type () const noexcept=0 | 
| void | enable_fetch_auth_metadata () | 
| void | force_cache_update () | 
| void | check_auth_metadata_timers () const | 
| std::pair< bool, MetaData::auth_credentials_t::mapped_type > | get_rest_user_auth_data (const std::string &user) | 
| void | handle_sockets_acceptors_on_md_refresh () | 
| Toggle socket acceptors state update on next metadata refresh.  More... | |
| void | add_routing_guidelines_update_callbacks (metadata_cache::MetadataCacheAPI::update_routing_guidelines_callback_t update_callback, metadata_cache::MetadataCacheAPI::on_routing_guidelines_change_callback_t on_routing_guidelines_change_callback) | 
| void | clear_routing_guidelines_update_callbacks () | 
| void | add_router_info_update_callback (metadata_cache::MetadataCacheAPI::update_router_info_callback_t clb) | 
| void | clear_router_info_update_callback () | 
  Public Member Functions inherited from metadata_cache::ClusterStateNotifierInterface | |
| ClusterStateNotifierInterface ()=default | |
| ClusterStateNotifierInterface (const ClusterStateNotifierInterface &)=delete | |
| ClusterStateNotifierInterface & | operator= (const ClusterStateNotifierInterface &)=delete | 
| virtual | ~ClusterStateNotifierInterface () | 
Static Public Member Functions | |
| static void * | run_thread (void *context) | 
| run refresh thread  More... | |
Protected Member Functions | |
| virtual bool | refresh (bool needs_writable_node)=0 | 
| Refreshes the cache.  More... | |
| void | on_refresh_failed (bool md_servers_reachable=false) | 
| void | on_refresh_succeeded (const metadata_cache::metadata_server_t &metadata_server) | 
| void | on_instances_changed (const bool md_servers_reachable, uint64_t view_id=0) | 
| void | on_handle_sockets_acceptors () | 
| Called when the listening sockets acceptors state should be updated but replicaset instances has not changed (in that case socket acceptors would be handled when calling on_instances_changed).  More... | |
| void | on_md_refresh (const bool cluster_nodes_changed, const std::string &routing_guidelines_doc) | 
| Called on each metadata refresh.  More... | |
| void | on_refresh_requested () | 
| void | on_refresh_completed () | 
| bool | update_auth_cache () | 
| void | update_router_attributes () | 
| void | update_router_last_check_in () | 
| void | update_reported_routing_guideline_name (const std::string &guideline_name) | 
| void | update_routing_guidelines (const std::string &routing_guidelines_doc) | 
| bool | needs_initial_attributes_update () | 
| bool | needs_last_check_in_update () | 
The MetadataCache manages cached information fetched from the MySQL Server.
| MetadataCache::MetadataCache | ( | const unsigned | router_id, | 
| const std::string & | clusterset_id, | ||
| const std::vector< mysql_harness::TcpDestination > & | metadata_servers, | ||
| std::shared_ptr< MetaData > | cluster_metadata, | ||
| const metadata_cache::MetadataCacheTTLConfig & | ttl_config, | ||
| const mysqlrouter::SSLOptions & | ssl_options, | ||
| const mysqlrouter::TargetCluster & | target_cluster, | ||
| const metadata_cache::RouterAttributes & | router_attributes, | ||
| size_t | thread_stack_size = mysql_harness::kDefaultStackSizeInKiloBytes,  | 
        ||
| bool | use_cluster_notifications = false,  | 
        ||
| bool | close_connection_after_refresh = false  | 
        ||
| ) | 
Initialize a connection to the MySQL Metadata server.
| router_id | id of the router in the cluster metadata | 
| clusterset_id | UUID of the ClusterSet the Cluster belongs to (if bootstrapped as a ClusterSet, empty otherwise) | 
| metadata_servers | The servers that store the metadata | 
| cluster_metadata | metadata of the cluster | 
| ttl_config | metadata TTL configuration | 
| ssl_options | SSL related options for connection | 
| target_cluster | object identifying the Cluster this operation refers to | 
| router_attributes | Router attributes to be registered in the metadata | 
| thread_stack_size | The maximum memory allocated for thread's stack | 
| use_cluster_notifications | Flag indicating if the metadata cache should use GR notifications as an additional trigger for metadata refresh | 
| close_connection_after_refresh | if the connection should be closed after a refresh. | 
      
  | 
  override | 
| void MetadataCache::add_acceptor_handler_listener | ( | metadata_cache::AcceptorUpdateHandlerInterface * | listener | ) | 
Register observer that is notified when the state of listening socket acceptors should be updated on the next metadata refresh.
| listener | Observer object that is notified when replicaset nodes state is changed. | 
| void MetadataCache::add_md_refresh_listener | ( | metadata_cache::MetadataRefreshListenerInterface * | listener | ) | 
Register observer that is notified on each metadata refresh event.
| listener | Observer object that is notified on md refresh. | 
| void MetadataCache::add_router_info_update_callback | ( | metadata_cache::MetadataCacheAPI::update_router_info_callback_t | clb | ) | 
| void MetadataCache::add_routing_guidelines_update_callbacks | ( | metadata_cache::MetadataCacheAPI::update_routing_guidelines_callback_t | update_callback, | 
| metadata_cache::MetadataCacheAPI::on_routing_guidelines_change_callback_t | on_routing_guidelines_change_callback | ||
| ) | 
      
  | 
  overridevirtual | 
Register observer that is notified when there is a change in the cluster nodes setup/state discovered.
| listener | Observer object that is notified when cluster nodes state is changed. | 
Implements metadata_cache::ClusterStateNotifierInterface.
| void MetadataCache::check_auth_metadata_timers | ( | ) | const | 
| void MetadataCache::clear_router_info_update_callback | ( | ) | 
| void MetadataCache::clear_routing_guidelines_update_callbacks | ( | ) | 
      
  | 
  pure virtualnoexcept | 
Implemented in ARMetadataCache, and GRMetadataCache.
      
  | 
  inline | 
      
  | 
  inline | 
| metadata_cache::cluster_nodes_list_t MetadataCache::get_cluster_nodes | ( | ) | 
Returns list of managed servers in a cluster.
Return a list of servers that are part of a cluster.
| metadata_cache::ClusterTopology MetadataCache::get_cluster_topology | ( | ) | 
Returns object containing current Cluster Topology.
| std::pair< bool, MetaData::auth_credentials_t::mapped_type > MetadataCache::get_rest_user_auth_data | ( | const std::string & | user | ) | 
      
  | 
  inline | 
Toggle socket acceptors state update on next metadata refresh.
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
Called when the listening sockets acceptors state should be updated but replicaset instances has not changed (in that case socket acceptors would be handled when calling on_instances_changed).
      
  | 
  protected | 
      
  | 
  protected | 
Called on each metadata refresh.
| [in] | cluster_nodes_changed | Information whether there was a change in instances reported by metadata refresh. | 
| [in] | routing_guidelines_doc | Routing guidelines document fetched from metadata, used by the guidelines engine. | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protectedpure virtual | 
Refreshes the cache.
Implemented in ARMetadataCache, and GRMetadataCache.
      
  | 
  inline | 
| void MetadataCache::refresh_thread | ( | ) | 
refresh cluster information
| void MetadataCache::remove_acceptor_handler_listener | ( | metadata_cache::AcceptorUpdateHandlerInterface * | listener | ) | 
Unregister observer previously registered with add_acceptor_handler_listener()
| listener | Observer object that should be unregistered. | 
| void MetadataCache::remove_md_refresh_listener | ( | metadata_cache::MetadataRefreshListenerInterface * | listener | ) | 
Unregister observer previously registered with add_md_refresh_listener()
| listener | Observer object that should be unregistered. | 
      
  | 
  overridevirtual | 
Unregister observer previously registered with add_state_listener()
| listener | Observer object that should be unregistered. | 
Implements metadata_cache::ClusterStateNotifierInterface.
      
  | 
  static | 
run refresh thread
| void MetadataCache::start | ( | ) | 
Starts the Metadata Cache.
Connect to the metadata servers and refresh the metadata information in the cache.
Starts the Metadata Cache and launch thread.
      
  | 
  noexcept | 
Stops the Metadata Cache.
Stop the refresh thread.
Stops the Metadata Cache and the launch thread.
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
| bool MetadataCache::wait_primary_failover | ( | const std::string & | server_uuid, | 
| const std::chrono::seconds & | timeout | ||
| ) | 
Wait until cluster PRIMARY changes.
wait until a change of the PRIMARY is noticed
leave early if
function has to handle two scenarios:
connection to PRIMARY fails because:
Therefore, if the connection to PRIMARY fails, wait for change of the membership or timeout, whatever happens earlier.
| server_uuid | server-uuid of the PRIMARY that we failed to connect | 
| timeout | - amount of time to wait for a failover | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
notification thread facade
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
refresh thread facade
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
Flag indicating if socket acceptors state should be updated on next metadata refresh even if instance information has not changed.
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected |