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_);
221 return callbacks_metadata_ro_.get_connection_configuration();
223 return callbacks_userdata_ro_.get_connection_configuration();
225 return callbacks_metadata_rw_.get_connection_configuration();
227 return callbacks_userdata_rw_.get_connection_configuration();
229 assert(
nullptr &&
"Shouldn't happen");
230 throw std::logic_error(
"internal error");
235 if (
object.parent_)
object.parent_->return_instance(
object);
239 cache_manager_metadata_ro_.change_cache_object_limit(limit);
240 cache_manager_userdata_ro_.change_cache_object_limit(limit);
241 cache_manager_metadata_rw_.change_cache_object_limit(limit);
242 cache_manager_userdata_rw_.change_cache_object_limit(limit);
245 void configure(
const std::string &json_object);
251 if (instance.
get()) {
254 instance.
get()->change_user(
255 cb->get_connection_configuration().mysql_user_,
256 cb->get_connection_configuration().mysql_password_,
"");
267 default_mysql_cache_instances_};
269 default_mysql_cache_instances_};
271 default_mysql_cache_instances_};
273 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:170
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:261
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:248
virtual collector::MySQLConnection get_type(const CachedObject &obj)
Definition: mysql_cache_manager.h:166
MysqlCacheCallbacks callbacks_userdata_ro_
Definition: mysql_cache_manager.h:263
MySqlCacheManager::Object Object
Definition: mysql_cache_manager.h:94
virtual void change_cache_object_limit(uint32_t limit)
Definition: mysql_cache_manager.h:238
virtual ~MysqlCacheManager()=default
MysqlCacheCallbacks callbacks_metadata_ro_
Definition: mysql_cache_manager.h:262
const ConnectionConfiguration & get_connection_configuration(collector::MySQLConnection type) const
Definition: mysql_cache_manager.h:217
MysqlCacheManager(const mrs::Configuration &configuration)
Definition: mysql_cache_manager.h:124
virtual void return_instance(CachedObject &object)
Definition: mysql_cache_manager.h:234
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:264
MySQLSession::ConnectionParameters ConnectionParameters
Definition: mysql_cache_manager.h:90
MysqlCacheCallbacks callbacks_userdata_rw_
Definition: mysql_cache_manager.h:265
Definition: configuration.h:49
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:55
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