30 #include <sys/types.h> 48 #define LINE_70 "========================================" \ 49 "========================================" 61 #if defined(UNDEFINED) 72 shm_as_p->suspend_mode = SUSPEND_NONE;
82 shm_as_p->use_pdh_flag =
FALSE;
83 br_info_p->pdh_workset = 0;
84 br_info_p->pdh_pct_cpu = 0;
103 shm_as_p->as_port = br_info_p->appl_server_port;
136 #if !defined(WINDOWS) 137 char process_name[128];
141 snprintf (port_name,
sizeof (port_name) - 1,
"%s/%s.%d", dirname, br_info_p->
name, as_index);
143 #if !defined(WINDOWS) 164 as_info_p->clt_ip_addr[0] =
'\0';
172 as_info_p->pdh_pid = 0;
173 as_info_p->pdh_workset = 0;
174 as_info_p->pdh_pct_cpu = 0;
213 if (shm_as_p ==
NULL)
218 shard_shm_set_shm_as (shm_as_p, br_info_p);
224 as_info_p = &(shm_as_p->
as_info[
i]);
225 memset (as_info_p, 0,
sizeof (*as_info_p));
226 shard_shm_set_as_info (as_info_p, br_info_p);
271 int appl_server_min_num, appl_server_max_num;
295 if (shm_proxy_p ==
NULL)
307 goto init_shm_proxy_error;
315 goto init_shm_proxy_error;
323 goto init_shm_proxy_error;
327 if (appl_server_min_num < 1)
329 fprintf (stderr,
"shorted MIN_NUM_APPL_SERVER. " "it need %d at least\n", num_proxy * num_shard);
330 goto init_shm_proxy_error;
334 if (appl_server_max_num < 1)
336 fprintf (stderr,
"shorted MAX_NUM_APPL_SERVER. " "it need %d at least\n", num_proxy * num_shard);
337 goto init_shm_proxy_error;
345 for (i = 0; i < num_proxy; i++)
355 proxy_info_p->
pid = -1;
375 for (j = 0; j < num_key; j++)
377 key_stat_p = &proxy_info_p->
key_stat[j];
381 for (j = 0; j < num_shard; j++)
387 for (j = 0; j < max_context; j++)
393 for (j = 0; j < num_shard; j++)
412 init_shm_proxy_error:
424 if (proxy_id >= 0 && proxy_id < proxy_p->num_proxy)
439 if (shard_id >= 0 && shard_id < proxy_info_p->num_shard_conn)
441 shard_info_p = &proxy_info_p->
shard_info[shard_id];
459 return (client_info_p);
469 if (idx >= 0 && idx < proxy_info_p->num_shard_conn)
471 shard_stat_p = &proxy_info_p->
shard_stat[idx];
474 return (shard_stat_p);
484 if (idx >= 0 && idx < proxy_info_p->num_shard_key)
486 key_stat_p = &proxy_info_p->
key_stat[idx];
495 struct tm *at_tm_p =
NULL;
496 struct tm *ct_tm_p =
NULL;
497 char last_access_time[128];
498 char last_connect_time[128];
501 fprintf (fp,
BLANK_9 "%-30s = %-30d \n",
"PID", as_info_p->
pid);
518 sprintf (last_access_time,
"%d/%02d/%02d %02d:%02d:%02d", at_tm_p->tm_year + 1900, at_tm_p->tm_mon + 1,
519 at_tm_p->tm_mday, at_tm_p->tm_hour, at_tm_p->tm_min, at_tm_p->tm_sec);
520 fprintf (fp,
BLANK_9 "%-30s = %-30s \n",
"LAST_ACCESS_TIME", last_access_time);
523 fprintf (fp,
BLANK_9 "%-30s = %-30lld \n",
"NUM_TRANSACTIONS_PROCESSED",
540 sprintf (last_connect_time,
"%d/%02d/%02d %02d:%02d:%02d", ct_tm_p->tm_year + 1900, ct_tm_p->tm_mon + 1,
541 ct_tm_p->tm_mday, ct_tm_p->tm_hour, ct_tm_p->tm_min, ct_tm_p->tm_sec);
542 fprintf (fp,
BLANK_9 "%-30s = %-30s \n",
"LAST_CONNECT_TIME", last_connect_time);
554 fprintf (fp,
BLANK_6 "%-30s = %-30d \n",
"SHARD_ID", shard_info_p->
shard_id);
558 fprintf (fp,
BLANK_6 "%-30s = %-30llu \n",
"WAITER_COUNT", (
long long unsigned int) shard_info_p->
waiter_count);
563 fprintf (fp,
BLANK_9 "<CAS %d>\n", i);
582 fprintf (fp,
BLANK_3 "%-30s = %-30d \n",
"PROXY_ID", proxy_info_p->
proxy_id);
583 fprintf (fp,
BLANK_3 "%-30s = %-30d \n",
"PID", proxy_info_p->
pid);
584 fprintf (fp,
BLANK_3 "%-30s = %-30d \n",
"STATUS", proxy_info_p->
status);
586 fprintf (fp,
BLANK_3 "%-30s = %-30s \n",
"PORT_NAME", proxy_info_p->
port_name);
587 fprintf (fp,
BLANK_3 "%-30s = %-30d \n",
"MAX_SHARD", proxy_info_p->
max_shard);
590 for (shard_index = 0; shard_index < proxy_info_p->
num_shard_conn; shard_index++)
595 fprintf (fp,
BLANK_6 "<SHARD %d>\n", shard_index);
618 fprintf (fp,
"<PROXY COMMON>\n");
619 fprintf (fp,
"%-30s = %-30d \n",
"NUM_PROXY", shm_proxy_p->
num_proxy);
620 fprintf (fp,
"%-30s = %-30d \n",
"MAX_CLIENT", shm_proxy_p->
max_client);
621 fprintf (fp,
"%-30s = %-30d \n",
"MAX_CONTEXT", shm_proxy_p->
max_context);
623 fprintf (fp,
"%-30s = %-30d \n",
"SHARD_KEY_MODULE", shm_proxy_p->
shard_key_modular);
627 for (proxy_index = 0; proxy_index < shm_proxy_p->
num_proxy; proxy_index++)
632 fprintf (fp,
BLANK_3 "<PROXY %d>\n", proxy_index);
657 if (shm_proxy_p ==
NULL)
659 SHARD_ERR (
"failed to uw_shm_open(shmid:%x). \n", shmid);
680 if (shard_info_p !=
NULL)
690 unsigned int ip_addr,
char *driver_info,
char *driver_version)
695 if (as_info_p ==
NULL)
730 if (as_info_p ==
NULL)
849 if (max_num_appl_server <= 0)
851 max_num_appl_server = 1;
int long_transaction_time
char shard_key_library_name[BROKER_INFO_NAME_MAX]
T_SHM_SHARD_KEY_STAT key_stat[SHARD_KEY_STAT_SIZE_LIMIT]
INT64 num_long_transactions
char access_log_file[CONF_LOG_FILE_LEN]
char jdbc_cache_only_hint
char database_name[SRV_CON_DBNAME_SIZE]
char driver_info[SRV_CON_CLIENT_INFO_SIZE]
static void shard_shm_dump_proxy(FILE *fp, T_SHM_PROXY *shm_proxy_p)
static void shard_shm_set_shm_proxy(T_SHM_PROXY *shm_proxy_p, T_BROKER_INFO *br_info_p)
char * dirname(const char *path)
static void shard_shm_init_key_stat(T_SHM_SHARD_KEY_STAT *key_stat_p, T_SHARD_KEY *shard_key)
char shard_key_library_name[SHM_PROXY_NAME_MAX]
T_MAX_HEAP_NODE job_queue[JOB_QUEUE_MAX_SIZE+1]
#define SRV_CON_CLIENT_INFO_SIZE
char shard_key_function_name[BROKER_INFO_NAME_MAX]
int max_prepared_stmt_count
char proxy_log_dir[CONF_LOG_FILE_LEN]
T_PROXY_INFO proxy_info[MAX_PROXY_NUM]
T_SHARD_INFO * shard_shm_find_shard_info(T_PROXY_INFO *proxy_info_p, int shard_id)
INT64 num_no_hint_queries_requested
T_SHARD_CONN shard_conn[MAX_SHARD_CONN]
char error_log_file[CONF_LOG_FILE_LEN]
T_PROXY_INFO * shard_shm_find_proxy_info(T_SHM_PROXY *proxy_p, int proxy_id)
unsigned char cas_clt_ip[4]
static void shard_shm_dump_shard_appl_server(FILE *fp, T_APPL_SERVER_INFO *as_info_p)
T_BROKER_VERSION clt_version
static T_BROKER_INFO * br_info_p
int max_prepared_stmt_count
#define SHARD_ERR(f, a...)
T_SHARD_KEY_RANGE range[SHARD_KEY_RANGE_MAX]
static T_SHM_PROXY * shm_proxy_p
char slow_log_dir[CONF_LOG_FILE_LEN]
char proxy_log_dir[CONF_LOG_FILE_LEN]
void shard_shm_init_client_info_request(T_CLIENT_INFO *client_info_p)
char database_user[SRV_CON_DBUSER_SIZE]
INT64 num_queries_processed
T_SHM_SHARD_CONN_STAT * shard_shm_get_shard_stat(T_PROXY_INFO *proxy_info_p, int idx)
T_SHARD_INFO shard_info[SHARD_INFO_SIZE_LIMIT]
struct t_shm_proxy T_SHM_PROXY
int appl_server_hard_limit
#define CLIENT_INFO_SIZE_LIMIT
char broker_name[BROKER_NAME_LEN]
int appl_server_hard_limit
T_APPL_SERVER_INFO * shard_shm_get_as_info(T_PROXY_INFO *proxy_info_p, T_SHM_APPL_SERVER *shm_as_p, int shard_id, int as_id)
char jdbc_cache_only_hint
#define SRV_CON_VER_STR_MAX_SIZE
bool shard_shm_set_as_client_info_with_db_param(T_PROXY_INFO *proxy_info_p, T_SHM_APPL_SERVER *shm_as_p, int shard_id, int as_id, T_CLIENT_INFO *client_info_p)
char cci_default_autocommit
char * get_cubrid_file(T_CUBRID_FILE_ID fid, char *buf, size_t len)
char cur_statement_pooling
T_SHM_SHARD_KEY_RANGE_STAT stat[SHARD_KEY_RANGE_MAX]
int long_transaction_time
static const char * get_appl_server_name(int appl_server_type)
#define CAS_MAKE_PROTO_VER(DRIVER_INFO)
#define CON_STATUS_LOCK_INIT(AS_INFO)
char log_dir[CONF_LOG_FILE_LEN]
char driver_info[SRV_CON_CLIENT_INFO_SIZE]
void shard_shm_init_client_info(T_CLIENT_INFO *client_info_p)
char cci_default_autocommit
void uw_shm_detach(void *p)
char clt_appl_name[APPL_NAME_LENGTH]
T_SHM_SHARD_KEY * shm_key_p
char stripped_column_name
#define CAS_USE_DEFAULT_DB_PARAM
static int shard_shm_get_max_context(int max_num_appl_server)
int uw_shm_destroy(int shm_key)
int max_prepared_stmt_count
#define strncpy_bufsize(buf, str)
T_CLIENT_INFO * shard_shm_get_client_info(T_PROXY_INFO *proxy_info_p, int idx)
char clt_req_path_info[APPL_NAME_LENGTH]
char source_env[CONF_LOG_FILE_LEN]
char driver_version[SRV_CON_VER_STR_MAX_SIZE]
INT64 num_transactions_processed
T_SHM_SHARD_CONN_STAT shard_stat[SHARD_CONN_STAT_SIZE_LIMIT]
INT64 num_hint_key_queries_requested
char shard_key_function_name[SHM_PROXY_NAME_MAX]
static T_SHM_APPL_SERVER * shm_appl
static char ** make_env(char *env_file, int *env_num)
char err_log_dir[CONF_LOG_FILE_LEN]
T_SHM_SHARD_CONN shm_shard_conn
char database_host[CUB_MAXHOSTNAMELEN]
char preferred_hosts[BROKER_INFO_NAME_MAX]
T_PROXY_INFO * proxy_info_p
int proxy_access_log_reset
T_CLIENT_INFO client_info[CLIENT_INFO_SIZE_LIMIT+PROXY_RESERVED_FD]
void shard_shm_set_client_info_response(T_CLIENT_INFO *client_info_p)
#define PROXY_RESERVED_FD
INT64 num_range_queries_requested
static void shard_shm_dump_shard(FILE *fp, T_SHARD_INFO *shard_info_p, T_SHM_APPL_SERVER *shm_as_p)
T_SHARD_KEY shard_key[MAX_SHARD_KEY]
INT64 num_requests_received
static void shard_shm_dump_proxy_info(FILE *fp, T_PROXY_INFO *proxy_info_p)
int proxy_max_prepared_stmt_count
INT64 num_hint_id_queries_requested
char preferred_hosts[SHM_APPL_SERVER_NAME_MAX]
T_SHM_SHARD_KEY_STAT * shard_shm_get_key_stat(T_PROXY_INFO *proxy_info_p, int idx)
void shard_shm_dump_appl_server(FILE *fp, int shmid)
char name[BROKER_NAME_LEN]
bool shard_shm_set_as_client_info(T_PROXY_INFO *proxy_info_p, T_SHM_APPL_SERVER *shm_as_p, int shard_id, int as_id, unsigned int ip_addr, char *driver_info, char *driver_version)
#define PROXY_STATUS_START
char error_log_file[CONF_LOG_FILE_LEN]
char appl_server_name[APPL_SERVER_NAME_MAX_SIZE]
char driver_version[SRV_CON_VER_STR_MAX_SIZE]
T_APPL_SERVER_INFO as_info[APPL_SERVER_NUM_LIMIT]
char port_name[SHM_PROXY_NAME_MAX]
void shard_shm_dump_appl_server_internal(FILE *fp, T_SHM_PROXY *shm_proxy_p)
static void shard_shm_set_shard_conn_info(T_SHM_APPL_SERVER *shm_as_p, T_SHM_PROXY *shm_proxy_p)
#define APPL_SERVER_NAME_MAX_SIZE
char stripped_column_name
char source_env[CONF_LOG_FILE_LEN]
T_SHM_APPL_SERVER * shm_as_p
void * uw_shm_open(int shm_key, int which_shm, T_SHM_MODE shm_mode)
T_SHM_SHARD_KEY shm_shard_key
char slow_log_dir[CONF_LOG_FILE_LEN]
T_SHM_SHARD_CONN * shm_conn_p
char log_dir[CONF_LOG_FILE_LEN]
char err_log_dir[CONF_LOG_FILE_LEN]
struct t_shm_appl_server T_SHM_APPL_SERVER
static void shard_shm_init_shard_stat(T_SHM_SHARD_CONN_STAT *shard_stat_p, T_SHARD_CONN *shard_conn)
static void free_env(char **env, int env_num)
void shard_shm_set_client_info_request(T_CLIENT_INFO *client_info_p, int func_code)
T_SHM_PROXY * shard_shm_initialize_shm_proxy(T_BROKER_INFO *br_info_p)
void * uw_shm_create(int shm_key, int size, int which_shm)