26#ifndef ROUTER_SRC_REST_MRS_SRC_CONNECTION_CACHE_MANAGER_H_
27#define ROUTER_SRC_REST_MRS_SRC_CONNECTION_CACHE_MANAGER_H_
100 const std::string &role = {})
129 "mysql_rest_service_meta_provider"},
130 callbacks_userdata_ro_{{
134 "mysql_rest_service_data_provider"},
135 callbacks_metadata_rw_{
137 "mysql_rest_service_meta_provider"},
138 callbacks_userdata_rw_{{
142 "mysql_rest_service_data_provider"} {}
144 : default_mysql_cache_instances_{10},
145 cache_manager_metadata_ro_{callbacks_meta},
146 cache_manager_userdata_ro_{callbacks_user} {}
161 assert(
nullptr &&
"Shouldn't happen");
167 if (obj.
parent_ == &cache_manager_metadata_ro_)
169 else if (obj.
parent_ == &cache_manager_metadata_ro_)
171 else if (obj.
parent_ == &cache_manager_metadata_rw_)
173 else if (obj.
parent_ == &cache_manager_userdata_rw_)
183 return cache_manager_metadata_ro_.get_instance(
wait);
185 return cache_manager_userdata_ro_.get_instance(
wait);
187 return cache_manager_metadata_rw_.get_instance(
wait);
189 return cache_manager_userdata_rw_.get_instance(
wait);
191 assert(
nullptr &&
"Shouldn't happen");
196 std::unique_ptr<collector::CountedMySQLSession> clone_instance(
203 change_to(instance, &cache_manager_metadata_ro_);
206 change_to(instance, &cache_manager_userdata_ro_);
209 change_to(instance, &cache_manager_metadata_rw_);
212 change_to(instance, &cache_manager_userdata_rw_);
218 if (
object.parent_)
object.parent_->return_instance(
object);
222 cache_manager_metadata_ro_.change_cache_object_limit(limit);
223 cache_manager_userdata_ro_.change_cache_object_limit(limit);
224 cache_manager_metadata_rw_.change_cache_object_limit(limit);
225 cache_manager_userdata_rw_.change_cache_object_limit(limit);
228 void configure(
const std::string &json_object);
234 if (instance.
get()) {
237 instance.
get()->change_user(
238 cb->get_connection_configuration().mysql_user_,
239 cb->get_connection_configuration().mysql_password_,
"");
250 default_mysql_cache_instances_};
252 default_mysql_cache_instances_};
254 default_mysql_cache_instances_};
256 default_mysql_cache_instances_};
Definition: cache_manager.h:41
Object get()
Definition: cache_manager.h:77
CacheManager * parent_
Definition: cache_manager.h:106
Definition: cache_manager.h:114
CacheManager::Object Object
Definition: cache_manager.h:116
CountedMySQLSession * Object
Definition: cache_manager.h:38
Callbacks * get_callbacks() const
Definition: cache_manager.h:164
Definition: mysql_cache_manager.h:48
std::string mysql_user_
Definition: mysql_cache_manager.h:83
DestinationProvider * provider_
Definition: mysql_cache_manager.h:82
ConnectionConfiguration(MySQLConnection type, const mrs::Configuration &configuration)
Definition: mysql_cache_manager.h:52
mysql_harness::SecureString mysql_password_
Definition: mysql_cache_manager.h:84
MySQLConnection type_
Definition: mysql_cache_manager.h:81
ConnectionConfiguration()=default
bool is_rw() const
Definition: mysql_cache_manager.h:71
Definition: counted_mysql_session.h:38
Definition: destination_provider.h:37
Definition: mysql_cache_manager.h:96
bool object_retrived_from_cache(Object) override
Definition: mysql_cache_manager.cc:143
bool is_default_server(Object &) const
Definition: mysql_cache_manager.cc:170
ConnectionParameters new_connection_params(bool wait)
Definition: mysql_cache_manager.cc:198
bool object_before_cache(Object, bool dirty) override
Definition: mysql_cache_manager.cc:126
void object_remove(Object) override
Definition: mysql_cache_manager.cc:121
int node_rount_robin_
Definition: mysql_cache_manager.h:120
void object_restore_defaults(Object &, bool dirty)
Definition: mysql_cache_manager.cc:155
bool is_default_user(Object &) const
Definition: mysql_cache_manager.cc:181
MysqlCacheCallbacks(const ConnectionConfiguration &configuration=ConnectionConfiguration{}, const std::string &role={})
Definition: mysql_cache_manager.h:98
Object object_allocate(bool wait) override
Definition: mysql_cache_manager.cc:103
const ConnectionConfiguration & get_connection_configuration() const
Definition: mysql_cache_manager.cc:193
ConnectionConfiguration connection_configuration_
Definition: mysql_cache_manager.h:118
std::string role_
Definition: mysql_cache_manager.h:119
Definition: mysql_cache_manager.h:87
virtual CachedObject get_instance(collector::MySQLConnection type, bool wait)
Definition: mysql_cache_manager.h:179
uint32_t default_mysql_cache_instances_
Definition: mysql_cache_manager.h:244
virtual void change_instance(CachedObject &instance, collector::MySQLConnection type)
Definition: mysql_cache_manager.h:199
static void change_to(CachedObject &instance, MySqlCacheManager *m)
Definition: mysql_cache_manager.h:231
virtual collector::MySQLConnection get_type(const CachedObject &obj)
Definition: mysql_cache_manager.h:166
MysqlCacheCallbacks callbacks_userdata_ro_
Definition: mysql_cache_manager.h:246
MySqlCacheManager::Object Object
Definition: mysql_cache_manager.h:94
virtual void change_cache_object_limit(uint32_t limit)
Definition: mysql_cache_manager.h:221
virtual ~MysqlCacheManager()=default
MysqlCacheCallbacks callbacks_metadata_ro_
Definition: mysql_cache_manager.h:245
MysqlCacheManager(const mrs::Configuration &configuration)
Definition: mysql_cache_manager.h:124
virtual void return_instance(CachedObject &object)
Definition: mysql_cache_manager.h:217
MysqlCacheManager(Callbacks *callbacks_meta, Callbacks *callbacks_user)
Definition: mysql_cache_manager.h:143
virtual CachedObject get_empty(collector::MySQLConnection type, bool wait)
Definition: mysql_cache_manager.h:150
MysqlCacheCallbacks callbacks_metadata_rw_
Definition: mysql_cache_manager.h:247
MySQLSession::ConnectionParameters ConnectionParameters
Definition: mysql_cache_manager.h:90
MysqlCacheCallbacks callbacks_userdata_rw_
Definition: mysql_cache_manager.h:248
Definition: configuration.h:47
Null-terminated string which is securely wiped on destruction.
Definition: secure_string.h:59
Definition: cache_manager.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
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:54
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:41