26#ifndef ROUTER_SRC_REST_MRS_SRC_CONNECTION_CACHE_MANAGER_H_
27#define ROUTER_SRC_REST_MRS_SRC_CONNECTION_CACHE_MANAGER_H_
122 callbacks_userdata_ro_{{
126 callbacks_metadata_rw_{
128 callbacks_userdata_rw_{{
133 : default_mysql_cache_instances_{10},
134 cache_manager_metadata_ro_{callbacks_meta},
135 cache_manager_userdata_ro_{callbacks_user} {}
150 assert(
nullptr &&
"Shouldn't happen");
156 if (obj.
parent_ == &cache_manager_metadata_ro_)
158 else if (obj.
parent_ == &cache_manager_metadata_ro_)
160 else if (obj.
parent_ == &cache_manager_metadata_rw_)
162 else if (obj.
parent_ == &cache_manager_userdata_rw_)
172 return cache_manager_metadata_ro_.get_instance(
wait);
174 return cache_manager_userdata_ro_.get_instance(
wait);
176 return cache_manager_metadata_rw_.get_instance(
wait);
178 return cache_manager_userdata_rw_.get_instance(
wait);
180 assert(
nullptr &&
"Shouldn't happen");
189 return get_instance(
type,
true);
192 virtual std::unique_ptr<collector::CountedMySQLSession> clone_instance(
199 change_to(instance, &cache_manager_metadata_ro_);
202 change_to(instance, &cache_manager_userdata_ro_);
205 change_to(instance, &cache_manager_metadata_rw_);
208 change_to(instance, &cache_manager_userdata_rw_);
217 return callbacks_metadata_ro_.get_connection_configuration();
219 return callbacks_userdata_ro_.get_connection_configuration();
221 return callbacks_metadata_rw_.get_connection_configuration();
223 return callbacks_userdata_rw_.get_connection_configuration();
225 assert(
nullptr &&
"Shouldn't happen");
226 throw std::logic_error(
"internal error");
231 if (
object.parent_)
object.parent_->return_instance(
object);
235 cache_manager_metadata_ro_.change_cache_object_limit(limit);
236 cache_manager_userdata_ro_.change_cache_object_limit(limit);
237 cache_manager_metadata_rw_.change_cache_object_limit(limit);
238 cache_manager_userdata_rw_.change_cache_object_limit(limit);
241 void configure(
const std::string &json_object);
247 if (instance.
get()) {
250 instance.
get()->change_user(
251 cb->get_connection_configuration().mysql_user_,
252 cb->get_connection_configuration().mysql_password_,
"");
263 default_mysql_cache_instances_};
265 default_mysql_cache_instances_};
267 default_mysql_cache_instances_};
269 default_mysql_cache_instances_};
Definition: cache_manager.h:41
Object get()
Definition: cache_manager.h:79
CacheManager * parent_
Definition: cache_manager.h:108
Definition: cache_manager.h:116
CacheManager::Object Object
Definition: cache_manager.h:118
CountedMySQLSession * Object
Definition: cache_manager.h:38
Callbacks * get_callbacks() const
Definition: cache_manager.h:172
Definition: mysql_cache_manager.h:51
std::string mysql_user_
Definition: mysql_cache_manager.h:78
DestinationProvider * provider_
Definition: mysql_cache_manager.h:77
ConnectionConfiguration(MySQLConnection type, const mrs::Configuration &configuration)
Definition: mysql_cache_manager.h:55
mysql_harness::SecureString mysql_password_
Definition: mysql_cache_manager.h:79
MySQLConnection type_
Definition: mysql_cache_manager.h:76
ConnectionConfiguration()=default
bool is_rw() const
Definition: mysql_cache_manager.h:74
Definition: counted_mysql_session.h:39
std::vector< std::string > Sqls
Definition: counted_mysql_session.h:41
Definition: destination_provider.h:37
Definition: mysql_cache_manager.h:91
bool object_retrived_from_cache(Object) override
Definition: mysql_cache_manager.cc:190
bool is_default_server(Object &) const
Definition: mysql_cache_manager.cc:217
ConnectionParameters new_connection_params(bool wait)
Definition: mysql_cache_manager.cc:245
bool object_before_cache(Object, bool dirty) override
Definition: mysql_cache_manager.cc:173
void object_remove(Object) override
Definition: mysql_cache_manager.cc:168
int node_rount_robin_
Definition: mysql_cache_manager.h:113
void object_restore_defaults(Object &, bool dirty)
Definition: mysql_cache_manager.cc:202
bool is_default_user(Object &) const
Definition: mysql_cache_manager.cc:228
MysqlCacheCallbacks(const ConnectionConfiguration &configuration=ConnectionConfiguration{})
Definition: mysql_cache_manager.h:93
Object object_allocate(bool wait) override
Definition: mysql_cache_manager.cc:158
const ConnectionConfiguration & get_connection_configuration() const
Definition: mysql_cache_manager.cc:240
ConnectionConfiguration connection_configuration_
Definition: mysql_cache_manager.h:112
Definition: mysql_cache_manager.h:82
virtual CachedObject get_instance(collector::MySQLConnection type, bool wait)
Definition: mysql_cache_manager.h:168
uint32_t default_mysql_cache_instances_
Definition: mysql_cache_manager.h:257
virtual void change_instance(CachedObject &instance, collector::MySQLConnection type)
Definition: mysql_cache_manager.h:195
static void change_to(CachedObject &instance, MySqlCacheManager *m)
Definition: mysql_cache_manager.h:244
virtual collector::MySQLConnection get_type(const CachedObject &obj)
Definition: mysql_cache_manager.h:155
MysqlCacheCallbacks callbacks_userdata_ro_
Definition: mysql_cache_manager.h:259
MySqlCacheManager::Object Object
Definition: mysql_cache_manager.h:89
virtual void change_cache_object_limit(uint32_t limit)
Definition: mysql_cache_manager.h:234
virtual CachedObject get_control_plane_instance(collector::MySQLConnection type)
Definition: mysql_cache_manager.h:187
virtual ~MysqlCacheManager()=default
MysqlCacheCallbacks callbacks_metadata_ro_
Definition: mysql_cache_manager.h:258
const ConnectionConfiguration & get_connection_configuration(collector::MySQLConnection type) const
Definition: mysql_cache_manager.h:213
MysqlCacheManager(const mrs::Configuration &configuration)
Definition: mysql_cache_manager.h:117
virtual void return_instance(CachedObject &object)
Definition: mysql_cache_manager.h:230
MysqlCacheManager(Callbacks *callbacks_meta, Callbacks *callbacks_user)
Definition: mysql_cache_manager.h:132
virtual CachedObject get_empty(collector::MySQLConnection type, bool wait)
Definition: mysql_cache_manager.h:139
MysqlCacheCallbacks callbacks_metadata_rw_
Definition: mysql_cache_manager.h:260
MySQLSession::ConnectionParameters ConnectionParameters
Definition: mysql_cache_manager.h:85
MysqlCacheCallbacks callbacks_userdata_rw_
Definition: mysql_cache_manager.h:261
Definition: configuration.h:49
Null-terminated string which is securely wiped on destruction.
Definition: secure_string.h:59
Definition: mrs_component_embedded_mysql_cache.h:33
MySQLConnection
Definition: mysql_cache_manager.h:41
@ kMySQLConnectionUserdataRW
Definition: mysql_cache_manager.h:45
@ kMySQLConnectionMetadataRO
Definition: mysql_cache_manager.h:42
@ kMySQLConnectionMetadataRW
Definition: mysql_cache_manager.h:44
@ kMySQLConnectionUserdataRO
Definition: mysql_cache_manager.h:43
CountedMySQLSession::Sqls build_mysql_cache_initial_sqls(MySQLConnection type)
Definition: mysql_cache_manager.cc:147
bool is_rw_connection(MySQLConnection type)
Definition: mysql_cache_manager.cc:132
static bool cb(unsigned long long new_value)
Definition: option_usage.cc:45
collector::CountedMySQLSession::ConnectionParameters ConnectionParameters
Definition: query_retry_on_ro.cc:38
collector::MysqlCacheManager::CachedObject CachedObject
Definition: handler_db_object_function.cc:55
collector::CountedMySQLSession CountedMySQLSession
Definition: mrs_component_embedded_mysql_cache.cc:43
static int wait(mysql_cond_t *that, mysql_mutex_t *mutex_arg, const char *, unsigned int)
Definition: mysql_cond_v1_native.cc:62
static mysql_service_status_t get(THD **thd) noexcept
Definition: mysql_current_thread_reader_all_empty.cc:31
required string configuration
Definition: replication_asynchronous_connection_failover.proto:49
required string type
Definition: replication_group_member_actions.proto:34
Definition: counted_mysql_session.h:42