26#ifndef MYSQLROUTER_CLUSTER_METADATA_INCLUDED 
   27#define MYSQLROUTER_CLUSTER_METADATA_INCLUDED 
  130  for (
size_t i = 0; i < 
N; ++i) {
 
  144  for (
size_t i = 0; i < 
N; ++i) {
 
  182                const std::string &
value = 
"")
 
  211    "_disconnect_existing_sessions_when_hidden"};
 
  290      const uint32_t router_id, 
const std::string &hostname_override = 
"") = 0;
 
  306      const std::string &router_name, 
const bool overwrite,
 
  307      const std::string &hostname_override = 
"") = 0;
 
  310      const uint32_t router_id, 
const std::string &cluster_id,
 
  311      const std::string &target_cluster, 
const std::string &rw_endpoint,
 
  312      const std::string &ro_endpoint, 
const std::string &rw_split_endpoint,
 
  313      const std::string &rw_x_endpoint, 
const std::string &ro_x_endpoint,
 
  314      const std::string &username, 
const std::string &local_cluster) = 0;
 
  351      const std::string &new_accounts) 
const = 0;
 
  353  virtual std::vector<std::tuple<std::string, unsigned long>>
 
  364      const std::string & ) {
 
  417      uint32_t router_id, 
const std::string &hostname_override = 
"") 
override;
 
  420      const uint32_t router_id, 
const std::string &cluster_id,
 
  421      const std::string &target_cluster, 
const std::string &rw_endpoint,
 
  422      const std::string &ro_endpoint, 
const std::string &rw_split_endpoint,
 
  423      const std::string &rw_x_endpoint, 
const std::string &ro_x_endpoint,
 
  424      const std::string &username, 
const std::string &local_cluster) 
override;
 
  426  uint32_t 
register_router(
const std::string &router_name, 
const bool overwrite,
 
  427                           const std::string &hostname_override = 
"") 
override;
 
  430      const std::string &new_accounts) 
const override;
 
  468  uint64_t 
get_view_id(
const std::string &cluster_type_specific_id) 
override;
 
  471      const uint32_t router_id, 
const std::string &cluster_id,
 
  472      const std::string &target_cluster, 
const std::string &rw_endpoint,
 
  473      const std::string &ro_endpoint, 
const std::string &rw_split_endpoint,
 
  474      const std::string &rw_x_endpoint, 
const std::string &ro_x_endpoint,
 
  475      const std::string &username, 
const std::string &local_cluster) 
override;
 
  511      const std::string & ) 
override;
 
  516      uint32_t router_id, 
const std::string &hostname_override = 
"") 
override;
 
  519      const uint32_t router_id, 
const std::string &cluster_id,
 
  520      const std::string &target_cluster, 
const std::string &rw_endpoint,
 
  521      const std::string &ro_endpoint, 
const std::string &rw_split_endpoint,
 
  522      const std::string &rw_x_endpoint, 
const std::string &ro_x_endpoint,
 
  523      const std::string &username, 
const std::string &local_cluster) 
override;
 
  525  uint32_t 
register_router(
const std::string &router_name, 
const bool overwrite,
 
  526                           const std::string &hostname_override = 
"") 
override;
 
  529      const std::string &new_accounts) 
const override;
 
Base class to allow multiple SocketOperations implementations (at least one "real" and one mock for t...
Definition: socket_operations.h:45
 
static SocketOperations * instance()
Definition: socket_operations.cc:42
 
Definition: mysql_session.h:157
 
Definition: cluster_metadata.h:176
 
void invalidated_cluster_routing_policy(const InvalidatedClusterRoutingPolicy value)
Definition: cluster_metadata.h:197
 
InvalidatedClusterRoutingPolicy invalidated_cluster_routing_policy() const
Definition: cluster_metadata.h:191
 
void target_value(const std::string &value)
Definition: cluster_metadata.h:196
 
TargetCluster(const TargetType type=TargetType::ByPrimaryRole, const std::string &value="")
Definition: cluster_metadata.h:181
 
TargetType
Definition: cluster_metadata.h:178
 
InvalidatedClusterRoutingPolicy
Definition: cluster_metadata.h:179
 
void target_type(const TargetType value)
Definition: cluster_metadata.h:195
 
std::string target_value_
Definition: cluster_metadata.h:204
 
TargetType target_type_
Definition: cluster_metadata.h:203
 
InvalidatedClusterRoutingPolicy invalidated_cluster_routing_policy_
Definition: cluster_metadata.h:205
 
std::string to_string() const
Definition: cluster_metadata.h:187
 
const char * c_str() const
Definition: cluster_metadata.h:188
 
TargetType target_type() const
Definition: cluster_metadata.h:190
 
Definition: expected.h:286
 
std::atomic< Type > N
Definition: ut0counter.h:225
 
std::chrono::milliseconds milliseconds
Definition: authorize_manager.cc:67
 
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
 
Definition: instrumented_condition_variable.h:32
 
void ROUTER_CLUSTER_EXPORT verify_routing_guidelines_version(MySQLSession *mysql, const std::uint32_t router_id)
Definition: cluster_metadata.cc:460
 
std::string ROUTER_CLUSTER_EXPORT get_incompatible_server_version_msg(MySQLSession *mysql)
Definition: cluster_metadata.cc:1432
 
constexpr MetadataSchemaVersion kClusterSetsMetadataVersion
Definition: cluster_metadata.h:97
 
constexpr MetadataSchemaVersion kNewMetadataVersion
Definition: cluster_metadata.h:94
 
bool ROUTER_CLUSTER_EXPORT is_part_of_cluster_set(MySQLSession *mysql)
Definition: cluster_metadata.cc:1175
 
ClusterType
Definition: cluster_metadata.h:154
 
InstanceType
Definition: cluster_metadata.h:216
 
constexpr MetadataSchemaVersion kUpgradeInProgressMetadataVersion
Definition: cluster_metadata.h:103
 
std::map< std::string, std::string > OptionsMap
Definition: cluster_metadata.h:255
 
constexpr MetadataSchemaVersion kRequiredRoutingMetadataSchemaVersion[]
Definition: cluster_metadata.h:90
 
constexpr const std::string_view kNodeTagDisconnectWhenHidden
Definition: cluster_metadata.h:210
 
ClusterType ROUTER_CLUSTER_EXPORT get_cluster_type(const MetadataSchemaVersion &schema_version, MySQLSession *mysql)
Definition: cluster_metadata.cc:1218
 
constexpr MetadataSchemaVersion kRoutingGuidelinesMetadataVersion
Definition: cluster_metadata.h:100
 
constexpr const std::string_view kNodeTagHidden
Definition: cluster_metadata.h:209
 
MetadataSchemaVersion ROUTER_CLUSTER_EXPORT get_metadata_schema_version(MySQLSession *mysql)
Definition: cluster_metadata.cc:493
 
std::string ROUTER_CLUSTER_EXPORT get_metadata_schema_uncompatible_msg(const mysqlrouter::MetadataSchemaVersion &version)
Definition: cluster_metadata.cc:451
 
stdx::expected< void, std::string > ROUTER_CLUSTER_EXPORT setup_metadata_session(MySQLSession &session)
Definition: cluster_metadata.cc:1358
 
bool ROUTER_CLUSTER_EXPORT is_server_version_compatible(MySQLSession *mysql)
Definition: cluster_metadata.cc:1428
 
const bool kDefaultCloseConnectionAfterRefreshClusterSet
Definition: cluster_metadata.h:236
 
bool ROUTER_CLUSTER_EXPORT check_group_has_quorum(MySQLSession *mysql)
Definition: cluster_metadata.cc:560
 
constexpr MetadataSchemaVersion kRequiredBootstrapSchemaVersion[]
Definition: cluster_metadata.h:87
 
const bool kDefaultCloseConnectionAfterRefreshCluster
Definition: cluster_metadata.h:235
 
constexpr const std::chrono::milliseconds kDefaultMetadataTTLClusterGRNotificationsON
Definition: cluster_metadata.h:227
 
constexpr const std::chrono::milliseconds kDefaultMetadataTTLClusterSet
Definition: cluster_metadata.h:229
 
const bool kDefaultUseGRNotificationsClusterSet
Definition: cluster_metadata.h:233
 
bool ROUTER_CLUSTER_EXPORT check_group_replication_online(MySQLSession *mysql)
Definition: cluster_metadata.cc:544
 
bool ROUTER_CLUSTER_EXPORT metadata_schema_version_is_compatible(const mysqlrouter::MetadataSchemaVersion &required, const mysqlrouter::MetadataSchemaVersion &available)
Definition: cluster_metadata.cc:437
 
constexpr const std::chrono::milliseconds kDefaultMetadataTTLCluster
Definition: cluster_metadata.h:225
 
std::unique_ptr< ClusterMetadata > ROUTER_CLUSTER_EXPORT create_metadata(const MetadataSchemaVersion &schema_version, MySQLSession *mysql, const OptionsMap &options={}, mysql_harness::SocketOperationsBase *sockops=mysql_harness::SocketOperations::instance())
Definition: cluster_metadata.cc:1266
 
constexpr const bool kNodeTagDisconnectWhenHiddenDefault
Definition: cluster_metadata.h:214
 
constexpr const bool kNodeTagHiddenDefault
Definition: cluster_metadata.h:213
 
std::optional< InstanceType > ROUTER_CLUSTER_EXPORT str_to_instance_type(const std::string &)
Definition: cluster_metadata.cc:1386
 
std::string ROUTER_CLUSTER_EXPORT to_string(const MetadataSchemaVersion &version)
Definition: cluster_metadata.cc:488
 
const bool kDefaultUseGRNotificationsCluster
Definition: cluster_metadata.h:232
 
Definition: options.cc:57
 
Definition: gcs_xcom_synode.h:64
 
struct result result
Definition: result.h:34
 
required uint64 version
Definition: replication_group_member_actions.proto:41
 
required string type
Definition: replication_group_member_actions.proto:34
 
#define ROUTER_CLUSTER_EXPORT
Definition: router_cluster_export.h:15
 
Definition: cluster_metadata.h:238
 
bool is_primary
Definition: cluster_metadata.h:247
 
std::string get_cluster_type_specific_id() const
Definition: cluster_metadata.h:249
 
std::string cluster_type_specific_id
Definition: cluster_metadata.h:242
 
std::string cluster_id
Definition: cluster_metadata.h:240
 
std::vector< std::string > metadata_servers
Definition: cluster_metadata.h:239
 
std::string name
Definition: cluster_metadata.h:244