23#ifndef RESOURCEGROUPS_RESOURCE_GROUP_MGR_H_
24#define RESOURCEGROUPS_RESOURCE_GROUP_MGR_H_
55template <
class Key,
class Value>
163 nullptr,
thread_id, pfs_thread_attr) != 0;
318 assert(ticket !=
nullptr);
392 "SIGNAL restore_finished";
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:250
void release_lock(MDL_ticket *ticket)
Release lock with explicit duration.
Definition: mdl.cc:4213
A granted metadata lock.
Definition: mdl.h:984
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:35
MDL_context mdl_context
Definition: sql_class.h:954
resourcegroups::Resource_group_ctx * resource_group_ctx()
Get resource group context.
Definition: sql_class.h:3957
mysql_mutex_t LOCK_thd_data
Protects THD data accessed from other threads.
Definition: sql_class.h:1201
std::unordered_map, but with my_malloc and collation-aware comparison.
Definition: map_helpers.h:209
Definition: resource_group.h:48
This is a singleton class that provides various functionalities related to Resource group management,...
Definition: resource_group_mgr.h:69
static Resource_group_mgr * m_instance
Pointer to singleton instance of the Resource_group_mgr class.
Definition: resource_group_mgr.h:401
my_h_service m_h_res_grp_svc
Definition: resource_group_mgr.h:411
void restore_original_resource_group(THD *thd, resourcegroups::Resource_group *src_res_grp, resourcegroups::Resource_group *dest_res_grp)
Restore original resource group if resource group switching was performed before.
Definition: resource_group_mgr.h:379
void deinit()
Definition: resource_group_mgr.cc:273
void set_unsupport_reason(const std::string &reason)
Set reason for resource group not being supported.
Definition: resource_group_mgr.h:106
void remove_resource_group(const std::string &name)
Remove the resource group from the map identified by it's name.
Definition: resource_group_mgr.cc:491
Resource_group_mgr(const Resource_group_mgr &)=delete
~Resource_group_mgr()=default
bool init()
Initialize the Resource group manager.
Definition: resource_group_mgr.cc:312
bool thread_priority_available()
Check if a thread priority setting can be done.
Definition: resource_group_mgr.h:287
collation_unordered_map< std::string, std::unique_ptr< Resource_group > > * m_resource_group_hash
Map mapping resource group name with it's corresponding in-memory Resource_group object.
Definition: resource_group_mgr.h:427
const char * resource_group_type_str(const Type &type)
String corresponding to the type of resource group.
Definition: resource_group_mgr.h:330
Resource_group * deserialize_resource_group(const dd::Resource_group *res_grp)
Deserialize a DD resource group object into an in-memory Resource group object.
Definition: resource_group_mgr.cc:215
const mysql_service_pfs_resource_group_v3_t * m_resource_group_svc
Definition: resource_group_mgr.h:409
Resource_group_mgr()
Definition: resource_group_mgr.h:456
my_h_service m_h_notification_svc
Definition: resource_group_mgr.h:412
uint32_t m_num_vcpus
Value indicating the number of vcpus in the system.
Definition: resource_group_mgr.h:454
void operator=(const Resource_group_mgr &)=delete
bool disable_pfs_notification()
Definition: resource_group_mgr.cc:525
Resource_group * sys_default_resource_group()
Return the SYS_default resource group instance.
Definition: resource_group_mgr.h:245
bool switch_resource_group_if_needed(THD *thd, resourcegroups::Resource_group **src_res_grp, resourcegroups::Resource_group **dest_res_grp, MDL_ticket **ticket, MDL_ticket **cur_ticket)
Switch Resource Group if it is requested by environment.
Definition: resource_group_mgr.cc:535
bool acquire_shared_mdl_for_resource_group(THD *thd, const char *res_grp_name, enum_mdl_duration lock_duration, MDL_ticket **ticket, bool acquire_lock)
Acquire an shared MDL lock on resource group name.
Definition: resource_group_mgr.cc:253
void disable_resource_group()
Disable and deinitialize the resource group if it was initialized before.
Definition: resource_group_mgr.h:131
Resource_group * usr_default_resource_group()
Return the USR_default resource group instance.
Definition: resource_group_mgr.h:255
void release_shared_mdl_for_resource_group(THD *thd, MDL_ticket *ticket)
Release the shared MDL lock held on a resource group.
Definition: resource_group_mgr.h:317
mysql_rwlock_t m_map_rwlock
Lock protecting the resource group map.
Definition: resource_group_mgr.h:432
bool is_resource_group_default(const Resource_group *res_grp)
Check if a given Resource group is either SYS_default or USR_default.
Definition: resource_group_mgr.h:276
const char * usr_default_resource_group_name()
Definition: resource_group_mgr.h:266
Resource_group * create_and_add_in_resource_group_hash(const LEX_CSTRING &name, Type type, bool enabled, std::unique_ptr< std::vector< Range > > cpus, int thr_priority)
Create an in-memory resource group identified by its attributes and add it to the resource group map.
Definition: resource_group_mgr.cc:500
bool add_resource_group(std::unique_ptr< Resource_group > resource_group_ptr)
Add the resource group to the Resource group map.
Definition: resource_group_mgr.cc:479
bool move_resource_group(Resource_group *from_res_grp, Resource_group *to_res_grp)
Move the Resource group of the current thread identified by from_res_group to the Resource group to_r...
Definition: resource_group_mgr.cc:421
bool m_thread_priority_available
Boolean value indicating whether setting of thread priority is allowed.
Definition: resource_group_mgr.h:437
bool m_resource_group_support
Bool value indicating support for resource group.
Definition: resource_group_mgr.h:442
static Resource_group_mgr * instance()
Singleton method to return an instance of this class.
Definition: resource_group_mgr.cc:98
Resource_group * m_usr_default_resource_group
Pointer to USR_default and SYS_default resource groups.
Definition: resource_group_mgr.h:419
const char * unsupport_reason()
Reason for resource group not being supported.
Definition: resource_group_mgr.h:98
bool resource_group_support()
Check if support for Resource group exists at runtime.
Definition: resource_group_mgr.h:89
const mysql_service_pfs_notification_v3_t * m_notify_svc
Definition: resource_group_mgr.h:410
static void destroy_instance()
Destroy the singleton instance.
Definition: resource_group_mgr.cc:454
const char * sys_default_resource_group_name()
Get names of SYS_default and USR_default resource groups.
Definition: resource_group_mgr.h:263
uint32_t num_vcpus()
Number of VCPUs present in the system.
Definition: resource_group_mgr.h:340
const mysql_service_registry_t * m_registry_svc
Handles to the PFS registry, Resource Group and Notification services.
Definition: resource_group_mgr.h:408
int m_notify_handle
Definition: resource_group_mgr.h:413
Resource_group * get_resource_group(const std::string &resource_group_name)
Get the in-memory Resource group object corresponding to a resource group name.
Definition: resource_group_mgr.cc:462
bool get_thread_attributes(PSI_thread_attrs *pfs_thread_attr, ulonglong thread_id)
Get the thread attributes identified by PSI thread ID.
Definition: resource_group_mgr.h:159
Resource_group * m_sys_default_resource_group
Definition: resource_group_mgr.h:420
bool post_init()
Post initialization sequence during mysqld startup.
Definition: resource_group_mgr.cc:288
void set_res_grp_in_pfs(const char *name, int length, ulonglong thread_id)
Set Resource group name in the PFS table performance_schema.threads for the PFS thread id.
Definition: resource_group_mgr.h:233
std::string m_unsupport_reason
String indicating reason for resource group not being supported.
Definition: resource_group_mgr.h:447
Class that represents an abstraction of the Resource Group.
Definition: resource_group.h:43
#define mysql_mutex_lock(M)
Definition: mysql_mutex.h:49
#define mysql_mutex_unlock(M)
Definition: mysql_mutex.h:56
struct my_h_service_imp * my_h_service
A handle type for acquired Service.
Definition: registry.h:32
Error logging, slow query logging, general query logging: If it's server-internal,...
#define LogErr(severity, ecode,...)
Definition: log_builtins.h:842
enum_mdl_duration
Duration of metadata lock.
Definition: mdl.h:332
#define DBUG_EXECUTE_IF(keyword, a1)
Definition: my_dbug.h:170
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
@ INFORMATION_LEVEL
Definition: my_loglevel.h:44
static my_thread_id thread_id
Definition: my_thr_init.cc:62
Instrumentation helpers for rwlock.
The version of the current data dictionary table definitions.
Definition: dictionary_client.h:42
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:75
Definition: dd_resource_group.h:28
Type
Definition: resource_group_basic_types.h:32
const char * SYS_DEFAULT_RESOURCE_GROUP_NAME
Definition: resource_group_mgr.cc:67
const char * USR_DEFAULT_RESOURCE_GROUP_NAME
Definition: resource_group_mgr.cc:68
std::conditional_t< !std::is_array< T >::value, std::unique_ptr< T, detail::Deleter< T > >, std::conditional_t< detail::is_unbounded_array_v< T >, std::unique_ptr< T, detail::Array_deleter< std::remove_extent_t< T > > >, void > > unique_ptr
The following is a common type that is returned by all the ut::make_unique (non-aligned) specializati...
Definition: ut0new.h:2437
Instrumentation helpers for mutexes.
Performance schema instrumentation interface.
required string type
Definition: replication_group_member_actions.proto:33
required bool enabled
Definition: replication_group_member_actions.proto:32
#define SERVICE_TYPE(name)
Generates the standard Service type name.
Definition: service.h:75
Declarations for the Debug Sync Facility.
case opt name
Definition: sslopt-case.h:32
#define STRING_WITH_LEN(X)
Definition: string_with_len.h:28
Definition: mysql_lex_string.h:39
Performance Schema thread type: user/foreground or system/background.
Definition: psi_thread_bits.h:469
An instrumented rwlock structure.
Definition: mysql_rwlock_bits.h:50
Resource_group * m_cur_resource_group
Definition: resource_group_basic_types.h:54
get_thread_system_attrs_by_id_v3_t get_thread_system_attrs_by_id
Definition: pfs_resource_group.h:135
set_thread_resource_group_by_id_v1_t set_thread_resource_group_by_id
Definition: pfs_resource_group.h:133