34 #include <sys/types.h> 47 #include <sys/socket.h> 49 #include <netinet/in.h> 50 #include <arpa/inet.h> 56 #include <sys/resource.h> 77 #if defined(CAS_FOR_ORACLE) || defined(CAS_FOR_MYSQL) 78 #define DB_EMPTY_SESSION (0) 81 #define ADMIN_ERR_MSG_SIZE BROKER_PATH_MAX * 2 83 #define MAKE_VERSION(MAJOR, MINOR) (((MAJOR) << 8) | (MINOR)) 85 #define SHM_OPEN_ERR_MSG(BUF, ERRCODE, OSERRCODE) \ 87 int _err = ERRCODE, _os_err = OSERRCODE; \ 90 if (_err == UW_ER_SHM_OPEN_MAGIC) { \ 91 sprintf(BUF, "Cannot open shared memory (Version mismatched)"); \ 95 _msg = strerror(_os_err); \ 96 _msglen = sprintf(BUF, "Cannot open shared memory"); \ 98 _msglen += sprintf(BUF + _msglen, " (os error = %s)", _msg); \ 102 #define MEMBER_SIZE(TYPE, MEMBER) ((int) sizeof(((TYPE *)0)->MEMBER)) 103 #define NUM_OF_DIGITS(NUMBER) (int)log10(NUMBER) + 1 114 const char *param_value);
115 #if defined (ENABLE_UNUSED_FUNCTION) 118 static int shard_shm_set_param_shard_internal (
T_SHARD_CONN_INFO * shard_conn_info_p,
const char *param_name,
119 const char *param_value);
120 static int shard_shm_set_param_shard_in_proxy (
T_SHM_PROXY * proxy_p,
const char *param_name,
const char *param_value,
124 const char *param_value,
int as_number);
126 const char *param_value);
128 const char *param_value,
int shard_id,
int as_number);
130 int proxy_id,
int shard_id,
int as_number);
133 static void get_upper_str (
char *upper_str,
int len,
char *value);
145 static void free_env (
char **env,
int env_num);
146 static char **
make_env (
char *env_file,
int *env_num);
151 char **env,
int env_num);
153 int proxy_id,
char **env,
int env_num);
156 #if !defined(WINDOWS) 157 #if defined (ENABLE_UNUSED_FUNCTION) 158 static int get_cubrid_version (
void);
166 #if !defined(WINDOWS) && !defined(LINUX) 172 unix_style_path (
char *path)
175 for (p = path; *
p; p++)
191 strcpy (path, new_dir);
195 unix_style_path (path);
202 else if (
strlen (path) > 3 && path[2] ==
'/')
216 if (access (path, F_OK) < 0)
218 if (mkdir (path, 0777) < 0)
232 #if defined (ENABLE_UNUSED_FUNCTION) 234 admin_isstarted_cmd (
int master_shm_id)
259 strcpy (
admin_err_msg,
"Cannot start CUBRID Broker. (number of broker is 0)");
269 #if !defined(WINDOWS) 275 for (i = 0; i < br_num; i++)
277 #if !defined(WINDOWS) 293 if (br_info[i].shard_flag ==
ON)
305 strcpy (
admin_err_msg,
"failed to initialize broker shared memory");
309 for (i = 0; i < br_num; i++)
311 if (br_info[i].shard_flag ==
OFF)
316 if (br_info[i].shard_db_password[0] ==
'\0')
328 for (i = 0; i < br_num; i++)
333 if (br_info[i].service_flag ==
ON)
335 if (br_info[i].shard_flag ==
ON)
340 if (shm_proxy_p ==
NULL)
342 sprintf (
admin_err_msg,
"%s: failed to initialize proxy shared memory.", br_info->
name);
356 if (shm_as_p ==
NULL)
358 sprintf (
admin_err_msg,
"%s: failed to initialize appl server shared memory.", br_info->
name);
400 if (shm_as_p ==
NULL)
447 char shm_id_env_str[128];
449 putenv (shm_id_env_str);
450 run_child (NAME_UC_SHM);
471 #if !defined(WINDOWS) 474 strcpy (
admin_err_msg,
"Cannot stop CUBRID Broker. (Not owner)\n");
520 int appl_shm_key = 0, as_index;
533 if (strcasecmp (broker, shm_br->
br_info[i].
name) == 0)
559 if (shm_appl_server ==
NULL)
602 char appl_server_shm_key_str[32];
604 #if !defined(WINDOWS) 617 if (strcasecmp (broker, shm_br->
br_info[i].
name) == 0)
626 sprintf (
admin_err_msg,
"Cannot find broker [%s]\n", broker);
636 if (shm_appl ==
NULL)
707 for (i = 0; i < env_num; i++)
712 putenv (appl_server_shm_key_str);
715 #if !defined(WINDOWS) 716 snprintf (argv0,
sizeof (argv0) - 1,
"%s_%s_%d", shm_br->
br_info[br_index].
name, appl_name, as_index + 1);
722 pid = run_child (appl_name);
800 if (strcasecmp (broker, shm_br->
br_info[i].
name) == 0)
820 if (shm_appl_server ==
NULL)
894 if (strcmp (shm_br->
br_info[i].
name, broker_name) == 0)
898 sprintf (
admin_err_msg,
"Broker[%s] is already running", broker_name);
908 if (shm_proxy_p ==
NULL)
910 sprintf (
admin_err_msg,
"%s: failed to initialize proxy", broker_name);
924 if (shm_as_p ==
NULL)
926 sprintf (
admin_err_msg,
"%s: cannot create shared memory", broker_name);
954 if (shm_as_p ==
NULL)
983 sprintf (
admin_err_msg,
"Cannot find broker [%s]", broker_name);
1014 #if !defined(WINDOWS) 1024 if (strcmp (shm_br->
br_info[i].
name, broker_name) == 0)
1028 sprintf (
admin_err_msg,
"Broker[%s] is not running", broker_name);
1037 sprintf (
admin_err_msg,
"Cannot inactivate broker [%s]", broker_name);
1056 sprintf (
admin_err_msg,
"Cannot find broker [%s]", broker_name);
1068 bool reset_next =
FALSE;
1086 if (strcmp (shm_br->
br_info[i].
name, broker_name) == 0)
1090 sprintf (
admin_err_msg,
"Broker[%s] is not running", broker_name);
1104 sprintf (
admin_err_msg,
"Cannot find broker [%s]", broker_name);
1111 if (shm_as_p ==
NULL)
1123 if (proxy_p ==
NULL)
1131 for (j = 0; j < proxy_p->
num_proxy; j++)
1140 as_index = MAX (1, as_index);
1142 for (i = 0; i < as_index; i++)
1149 for (i = 0; i < as_index; i++)
1182 for (i = 0; i < limit_appl_index; i++)
1214 const char *
p = value;
1234 int length = (int)
strlen (shard_key);
1240 value_p->
integer = strtoll (shard_key, &end, 10);
1241 if (errno == ERANGE || *end !=
'\0')
1250 value_p->
string.
value = (
char *) malloc (
sizeof (
char) * (length + 1));
1255 memcpy (value_p->
string.
value, shard_key, length);
1267 printf (
"shard_getid -b <broker-name> [-f] shard-key\n");
1268 printf (
"\t-b shard broker name\n");
1269 printf (
"\t-f full information\n");
1280 const char *shard_key;
1281 const char *key_column;
1283 char line_buf[LINE_MAX];
1293 if (argc == 3 && strcmp (argv[2],
"--version") == 0)
1295 fprintf (stderr,
"VERSION %s\n",
makestring (BUILD_NUMBER));
1299 while ((optchar =
getopt (argc, (
char *
const *) argv,
"b:fh?")) != EOF)
1304 strncpy (broker_name,
optarg, NAME_MAX);
1307 full_info_flag =
true;
1323 shard_key = argv[argc - 1];
1325 if (strcmp (broker_name,
"") == 0)
1335 sprintf (
admin_err_msg,
"Failed to open master shared memory.\n");
1342 if (strcmp (shm_br->
br_info[i].
name, broker_name) == 0)
1346 sprintf (
admin_err_msg,
"Broker [%s] is not running.\n", broker_name);
1359 sprintf (
admin_err_msg,
"Cannot find shard broker [%s].\n", broker_name);
1375 if (shm_proxy_p ==
NULL)
1382 if (shm_key_p ==
NULL)
1384 sprintf (
admin_err_msg,
"Failed to get shm metadata shard key info.\n");
1389 if (shm_conn_p ==
NULL)
1391 sprintf (
admin_err_msg,
"Failed to get shm metadata connection info.\n");
1398 sprintf (
admin_err_msg,
"Failed to register shard hashing function.\n");
1405 sprintf (
admin_err_msg,
"Failed to make shard key value.\n");
1413 if (shard_key_id < 0)
1420 if (range_p ==
NULL)
1422 sprintf (
admin_err_msg,
"Unable to find shm shard range. (key:%s, key_id:%d).\n", key_column, shard_key_id);
1428 buf_len += sprintf (buf + buf_len,
"%% %s\n", broker_name);
1429 buf_len += sprintf (buf + buf_len,
" SHARD_ID : %d, ", range_p->
shard_id);
1430 buf_len += sprintf (buf + buf_len,
"SHARD_KEY : %s", shard_key);
1431 if (full_info_flag ==
true)
1433 buf_len += sprintf (buf + buf_len,
", KEY_COLUMN : %s", key_column);
1435 buf_len += sprintf (buf + buf_len,
"\n");
1439 if (full_info_flag ==
true)
1442 buf_len += sprintf (buf + buf_len,
" MODULAR : %d, ", shm_proxy_p->
shard_key_modular);
1444 sprintf (buf + buf_len,
"LIBRARY_NAME : %s, ",
1447 sprintf (buf + buf_len,
"FUNCTION_NAME : %s ",
1449 buf_len += sprintf (buf + buf_len,
"\n");
1454 if (full_info_flag ==
true)
1457 buf_len += sprintf (buf + buf_len,
" RANGE STATISTICS : %s\n", key_p->
key_column);
1461 buf_len += sprintf (buf + buf_len,
"%5s ~ ",
"MIN");
1462 buf_len += sprintf (buf + buf_len,
"%5s : ",
"MAX");
1463 buf_len += sprintf (buf + buf_len,
"%10s",
"SHARD");
1464 for (i = 0; i < buf_len; i++)
1469 printf (
"\t%s\n", buf);
1470 printf (
"\t%s\n", line_buf);
1473 buf_len += sprintf (buf + buf_len,
"\t%5d ~ %5d : %10d\n", range_p->
min, range_p->
max, range_p->
shard_id);
1474 printf (
"%s\n", buf);
1478 if (full_info_flag ==
true)
1481 buf_len += sprintf (buf + buf_len,
" SHARD CONNECTION : \n");
1485 buf_len += sprintf (buf + buf_len,
"%8s ",
"SHARD_ID");
1486 buf_len += sprintf (buf + buf_len,
"%16s ",
"DB NAME");
1487 buf_len += sprintf (buf + buf_len,
"%24s ",
"CONNECTION_INFO");
1488 for (i = 0; i < buf_len; i++)
1493 printf (
"\t%s\n", buf);
1494 printf (
"\t%s\n", line_buf);
1504 printf (
"\t%s\n", buf);
1528 admin_conf_change (
int master_shm_id,
const char *br_name,
const char *conf_name,
const char *conf_value,
int as_number)
1542 goto set_conf_error;
1548 if (strcasecmp (br_name, shm_br->
br_info[i].
name) == 0)
1556 sprintf (
admin_err_msg,
"Cannot find Broker [%s]", br_name);
1557 goto set_conf_error;
1562 sprintf (
admin_err_msg,
"Broker [%s] is not running.", br_name);
1563 goto set_conf_error;
1569 if (shm_as_p ==
NULL)
1572 goto set_conf_error;
1580 if (shm_proxy_p ==
NULL)
1583 goto set_conf_error;
1587 if (strcasecmp (conf_name,
"SQL_LOG") == 0)
1592 if (sql_log_mode < 0)
1595 goto set_conf_error;
1605 goto set_conf_error;
1624 sprintf (
admin_err_msg,
"Invalid cas number : %d", as_number);
1625 goto set_conf_error;
1632 else if (strcasecmp (conf_name,
"SLOW_LOG") == 0)
1637 if (slow_log_mode < 0)
1640 goto set_conf_error;
1649 goto set_conf_error;
1668 sprintf (
admin_err_msg,
"Invalid cas number : %d", as_number);
1669 goto set_conf_error;
1676 else if (strcasecmp (conf_name,
"ACCESS_MODE") == 0)
1680 if (access_mode == -1)
1683 goto set_conf_error;
1687 sprintf (
admin_err_msg,
"same as previous value : %s", conf_value);
1688 goto set_conf_error;
1697 goto set_conf_error;
1708 else if (strcasecmp (conf_name,
"CONNECT_ORDER") == 0)
1713 if (connect_order == -1)
1716 goto set_conf_error;
1721 sprintf (
admin_err_msg,
"same as previous value : %s", conf_value);
1722 goto set_conf_error;
1732 goto set_conf_error;
1743 else if (strcasecmp (conf_name,
"MAX_NUM_DELAYED_HOSTS_LOOKUP") == 0)
1745 int max_num_delayed_hosts_lookup = 0, result;
1747 result =
parse_int (&max_num_delayed_hosts_lookup, conf_value, 10);
1752 goto set_conf_error;
1757 sprintf (
admin_err_msg,
"same as previous value : %s", conf_value);
1758 goto set_conf_error;
1764 else if (strcasecmp (conf_name,
"RECONNECT_TIME") == 0)
1772 goto set_conf_error;
1778 else if (strcasecmp (conf_name,
"SQL_LOG_MAX_SIZE") == 0)
1780 int sql_log_max_size;
1784 if (sql_log_max_size <= 0)
1787 goto set_conf_error;
1791 sprintf (
admin_err_msg,
"value is out of range : %s", conf_value);
1792 goto set_conf_error;
1797 else if (strcasecmp (conf_name,
"LONG_QUERY_TIME") == 0)
1799 float long_query_time;
1803 if (long_query_time < 0)
1806 goto set_conf_error;
1810 sprintf (
admin_err_msg,
"value is out of range : %s", conf_value);
1811 goto set_conf_error;
1817 else if (strcasecmp (conf_name,
"LONG_TRANSACTION_TIME") == 0)
1819 float long_transaction_time;
1823 if (long_transaction_time < 0)
1826 goto set_conf_error;
1830 sprintf (
admin_err_msg,
"value is out of range : %s", conf_value);
1831 goto set_conf_error;
1837 else if (strcasecmp (conf_name,
"APPL_SERVER_MAX_SIZE") == 0)
1846 goto set_conf_error;
1852 "CONFIGURATION WARNING - the APPL_SERVER_MAX_SIZE (%dM)" 1853 " is greater than the APPL_SERVER_MAX_SIZE_HARD_LIMIT (%dM)", max_size /
ONE_K,
1860 else if (strcasecmp (conf_name,
"APPL_SERVER_MAX_SIZE_HARD_LIMIT") == 0)
1867 max_hard_limit = INT_MAX;
1868 if (hard_limit <= 0)
1870 sprintf (
admin_err_msg,
"APPL_SERVER_MAX_SIZE_HARD_LIMIT must be between 1 and %d", max_hard_limit /
ONE_K);
1871 goto set_conf_error;
1874 if (hard_limit < shm_br->br_info[br_index].appl_server_max_size)
1877 "CONFIGURATION WARNING - the APPL_SERVER_MAX_SIZE_HARD_LIMIT (%dM) " 1878 "is smaller than the APPL_SERVER_MAX_SIZE (%dM)", hard_limit /
ONE_K,
1885 else if (strcasecmp (conf_name,
"LOG_BACKUP") == 0)
1893 goto set_conf_error;
1897 else if (strcasecmp (conf_name,
"TIME_TO_KILL") == 0)
1902 if (time_to_kill <= 0)
1905 goto set_conf_error;
1909 else if (strcasecmp (conf_name,
"ACCESS_LOG") == 0)
1911 int access_log_flag;
1914 if (access_log_flag < 0)
1917 goto set_conf_error;
1922 else if (strcasecmp (conf_name,
"ACCESS_LOG_MAX_SIZE") == 0)
1935 goto set_conf_error;
1939 sprintf (
admin_err_msg,
"value is out of range : %s", conf_value);
1940 goto set_conf_error;
1947 else if (strcasecmp (conf_name,
"KEEP_CONNECTION") == 0)
1955 goto set_conf_error;
1960 else if (strcasecmp (conf_name,
"CACHE_USER_INFO") == 0)
1968 goto set_conf_error;
1973 else if (strcasecmp (conf_name,
"SQL_LOG2") == 0)
1977 result =
parse_int (&val, conf_value, 10);
1978 if (result != 0 || val < SQL_LOG2_NONE || val >
SQL_LOG2_MAX)
1981 goto set_conf_error;
1986 else if (strcasecmp (conf_name,
"STATEMENT_POOLING") == 0)
1994 goto set_conf_error;
1999 else if (strcasecmp (conf_name,
"JDBC_CACHE") == 0)
2007 goto set_conf_error;
2012 else if (strcasecmp (conf_name,
"JDBC_CACHE_HINT_ONLY") == 0)
2020 goto set_conf_error;
2025 else if (strcasecmp (conf_name,
"JDBC_CACHE_LIFE_TIME") == 0)
2029 val = atoi (conf_value);
2033 else if (strcasecmp (conf_name,
"CCI_PCONNECT") == 0)
2041 goto set_conf_error;
2046 else if (strcasecmp (conf_name,
"MAX_QUERY_TIMEOUT") == 0)
2055 goto set_conf_error;
2059 sprintf (
admin_err_msg,
"value is out of range : %s", conf_value);
2060 goto set_conf_error;
2065 else if (strcasecmp (conf_name,
"MYSQL_READ_TIMEOUT") == 0)
2074 goto set_conf_error;
2078 sprintf (
admin_err_msg,
"value is out of range : %s", conf_value);
2079 goto set_conf_error;
2084 else if (strcasecmp (conf_name,
"MYSQL_KEEPALIVE_INTERVAL") == 0)
2093 goto set_conf_error;
2098 else if (strcasecmp (conf_name,
"SHARD_PROXY_LOG") == 0)
2100 char proxy_log_mode;
2104 sprintf (
admin_err_msg,
"%s is only supported on shard", conf_name);
2105 goto set_conf_error;
2111 if (proxy_log_mode < 0)
2114 goto set_conf_error;
2121 goto set_conf_error;
2124 else if (strcasecmp (conf_name,
"SHARD_PROXY_LOG_MAX_SIZE") == 0)
2126 int proxy_log_max_size;
2130 sprintf (
admin_err_msg,
"%s is only supported on shard", conf_name);
2131 goto set_conf_error;
2136 if (proxy_log_max_size <= 0)
2139 goto set_conf_error;
2143 sprintf (
admin_err_msg,
"value is out of range : %s", conf_value);
2144 goto set_conf_error;
2149 else if (strcasecmp (conf_name,
"TRIGGER_ACTION") == 0)
2157 goto set_conf_error;
2171 goto set_conf_error;
2182 else if (strcasecmp (conf_name,
"PREFERRED_HOSTS") == 0)
2184 char *host_name = (
char *) conf_value;
2185 size_t host_name_len = 0;
2187 host_name_len =
strlen (host_name);
2191 sprintf (
admin_err_msg,
"The length of the host name is too long.");
2192 goto set_conf_error;
2195 if (strncasecmp (br_info_p->
preferred_hosts, host_name, host_name_len) == 0)
2197 sprintf (
admin_err_msg,
"same as previous value : %s", host_name);
2198 goto set_conf_error;
2204 else if (strcasecmp (conf_name,
"MAX_PREPARED_STMT_COUNT") == 0)
2209 err_code =
parse_int (&stmt_cnt, conf_value, 10);
2213 goto set_conf_error;
2218 sprintf (
admin_err_msg,
"value is out of range : %s", conf_value);
2219 goto set_conf_error;
2224 sprintf (
admin_err_msg,
"same as previous value : %s", conf_value);
2225 goto set_conf_error;
2230 sprintf (
admin_err_msg,
"cannot be decreased below the previous value '%d' : %s",
2232 goto set_conf_error;
2238 else if (strcasecmp (conf_name,
"SESSION_TIMEOUT") == 0)
2240 int session_timeout = 0;
2243 if (session_timeout < 0)
2246 goto set_conf_error;
2251 sprintf (
admin_err_msg,
"same as previous value : %s", conf_value);
2252 goto set_conf_error;
2258 else if (strcasecmp (conf_name,
"ERROR_LOG_DIR") == 0)
2260 char *err_log_dir = (
char *) conf_value;
2261 size_t err_log_dir_len = 0;
2263 err_log_dir_len =
strlen (err_log_dir);
2267 sprintf (
admin_err_msg,
"The length of ERROR_LOG_DIR is too long.");
2268 goto set_conf_error;
2279 #if defined(WINDOWS) 2280 if (strcasecmp (path_org, path_new) == 0)
2282 if (strcmp (path_org, path_new) == 0)
2285 sprintf (
admin_err_msg,
"same as previous value : %s", err_log_dir);
2286 goto set_conf_error;
2290 if (access (path_new, F_OK) < 0)
2292 sprintf (
admin_err_msg,
"cannot access the path : %s", path_new);
2293 goto set_conf_error;
2306 else if (strcasecmp (conf_name,
"LOG_DIR") == 0)
2308 char *log_dir = (
char *) conf_value;
2309 size_t log_dir_len = 0;
2311 log_dir_len =
strlen (log_dir);
2315 sprintf (
admin_err_msg,
"The length of LOG_DIR is too long.");
2316 goto set_conf_error;
2327 #if defined(WINDOWS) 2328 if (strcasecmp (path_org, path_new) == 0)
2330 if (strcmp (path_org, path_new) == 0)
2333 sprintf (
admin_err_msg,
"same as previous value : %s", log_dir);
2334 goto set_conf_error;
2338 if (access (path_new, F_OK) < 0)
2340 sprintf (
admin_err_msg,
"cannot access the path : %s", path_new);
2341 goto set_conf_error;
2346 strcpy (br_info_p->
log_dir, path_new);
2347 strcpy (shm_as_p->
log_dir, path_new);
2354 else if (strcasecmp (conf_name,
"SLOW_LOG_DIR") == 0)
2356 char *slow_log_dir = (
char *) conf_value;
2357 size_t slow_log_dir_len = 0;
2359 slow_log_dir_len =
strlen (slow_log_dir);
2363 sprintf (
admin_err_msg,
"The length of SLOW_LOG_DIR is too long.");
2364 goto set_conf_error;
2375 #if defined(WINDOWS) 2376 if (strcasecmp (path_org, path_new) == 0)
2378 if (strcmp (path_org, path_new) == 0)
2381 sprintf (
admin_err_msg,
"same as previous value : %s", slow_log_dir);
2382 goto set_conf_error;
2386 if (access (path_new, F_OK) < 0)
2388 sprintf (
admin_err_msg,
"cannot access the path : %s", path_new);
2389 goto set_conf_error;
2402 else if (strcasecmp (conf_name,
"ENABLE_MONITOR_SERVER") == 0)
2404 int monitor_server_flag;
2407 if (monitor_server_flag < 0)
2410 goto set_conf_error;
2418 goto set_conf_error;
2468 if (strcasecmp (broker, shm_br->
br_info[i].
name) == 0)
2481 if (shm_appl ==
NULL)
2531 environ[
i] = (
char *)
"DUMMY_ENV=VISION_THREE";
2534 for (j = 0; clt_envs[j] !=
NULL; j++)
2536 if (strncmp (
environ[i], clt_envs[j],
strlen (clt_envs[j])) == 0)
2538 environ[
i] = (
char *)
"DUMMY_ENV=VISION_THREE";
2552 char line_buf[LINE_MAX];
2565 if (broker_name !=
NULL)
2569 if (strcmp (shm_br->
br_info[i].
name, broker_name) == 0)
2577 sprintf (
admin_err_msg,
"Cannot find broker [%s]\n", broker_name);
2583 fprintf (stdout,
"ACCESS_CONTROL=%s\n", (shm_br->
access_control) ?
"ON" :
"OFF");
2604 if (shm_appl ==
NULL)
2611 fprintf (stdout,
"[%%%s]\n", shm_appl->
broker_name);
2619 len += sprintf (line_buf + len,
"%16s ",
"CLIENT IP");
2620 len += sprintf (line_buf + len,
"%25s",
"LAST ACCESS TIME");
2621 fprintf (stdout,
"%s\n", line_buf);
2623 for (k = 0; k < len; k++)
2628 fprintf (stdout,
"%s\n", line_buf);
2638 sprintf (str + len,
"%d%s",
2640 ((m != 3) ?
"." :
""));
2645 len += sprintf (str + len,
"*");
2648 len = sprintf (line_buf,
"%16.16s ", str);
2654 cur_tm.tm_year += 1900;
2656 sprintf (str,
"%02d-%02d-%02d %02d:%02d:%02d", cur_tm.tm_year, cur_tm.tm_mon + 1, cur_tm.tm_mday,
2657 cur_tm.tm_hour, cur_tm.tm_min, cur_tm.tm_sec);
2658 len += sprintf (line_buf + len,
"%25.25s", str);
2661 fprintf (stdout,
"%s\n", line_buf);
2663 fprintf (stdout,
"\n");
2665 fprintf (stdout,
"\n");
2674 if (shm_appl ==
NULL)
2681 fprintf (stdout,
"[%%%s]\n", shm_appl->
broker_name);
2689 len += sprintf (line_buf + len,
"%16s ",
"CLIENT IP");
2690 len += sprintf (line_buf + len,
"%25s",
"LAST ACCESS TIME");
2691 fprintf (stdout,
"%s\n", line_buf);
2693 for (k = 0; k < len; k++)
2698 fprintf (stdout,
"%s\n", line_buf);
2709 ((m != 3) ?
"." :
""));
2714 len += sprintf (str + len,
"*");
2717 len = sprintf (line_buf,
"%16.16s ", str);
2723 cur_tm.tm_year += 1900;
2725 sprintf (str,
"%02d-%02d-%02d %02d:%02d:%02d", cur_tm.tm_year, cur_tm.tm_mon + 1, cur_tm.tm_mday,
2726 cur_tm.tm_hour, cur_tm.tm_min, cur_tm.tm_sec);
2727 len += sprintf (line_buf + len,
"%25.25s", str);
2730 fprintf (stdout,
"%s\n", line_buf);
2732 fprintf (stdout,
"\n");
2734 fprintf (stdout,
"\n");
2749 char *access_file_name;
2760 if (broker_name !=
NULL)
2764 if (strcmp (shm_br->
br_info[i].
name, broker_name) == 0)
2772 sprintf (
admin_err_msg,
"Cannot find broker [%s]\n", broker_name);
2798 if (shm_appl ==
NULL)
2818 if (shm_appl ==
NULL)
2842 int pid,
i, res = 0;
2848 char master_shm_key_str[32];
2849 const char *broker_exe_name;
2850 int broker_check_loop_count = 30;
2858 if (shm_proxy_p ==
NULL)
2872 if (shm_appl ==
NULL)
2880 #if defined(WINDOWS) 2881 shm_appl->use_pdh_flag =
FALSE;
2882 br_info->pdh_workset = 0;
2883 br_info->pdh_pct_cpu = 0;
2888 #if !defined(WINDOWS) 2893 signal (SIGCHLD, SIG_IGN);
2896 #if !defined(WINDOWS) 2897 if ((pid = fork ()) < 0)
2906 #if !defined(WINDOWS) 2909 signal (SIGCHLD, SIG_DFL);
2910 #if defined(V3_ADMIN_D) 2911 if (admin_clt_sock_fd > 0)
2913 if (admin_srv_sock_fd > 0)
2920 for (i = 0; i < env_num; i++)
2927 putenv (master_shm_key_str);
2938 #if defined(WINDOWS) 2940 broker_exe_name = NAME_CAS_BROKER2;
2943 #if !defined(WINDOWS) 2948 #if defined(WINDOWS) 2949 pid = run_child (broker_exe_name);
2951 if (execle (broker_exe_name, broker_exe_name,
NULL,
environ) < 0)
2953 perror (broker_exe_name);
2962 if (
proxy_activate (br_info, shm_proxy_p, shm_appl, env, env_num) < 0)
2973 #if defined(WINDOWS) 2974 shm_appl->as_port = br_info->appl_server_port;
2984 as_activate (shm_br, br_info, shm_appl, as_info_p, i, env, env_num);
3017 for (i = 0; i < broker_check_loop_count; i++)
3035 if (i == broker_check_loop_count)
3064 time_t cur_time = time (
NULL);
3069 #if defined(WINDOWS) 3073 if (localtime_r (&cur_time, &ct) ==
NULL)
3091 if (shm_appl ==
NULL)
3102 if (shm_proxy_p ==
NULL)
3109 for (proxy_index = 0; proxy_index < shm_proxy_p->
num_proxy; proxy_index++)
3134 #if defined (WINDOWS) 3135 MAKE_ACL_SEM_NAME (acl_sem_name, shm_appl->
broker_name);
3155 int as_index,
char **env,
int env_num)
3158 char appl_server_shm_key_env_str[32];
3161 char as_id_env_str[32];
3163 #if !defined(WINDOWS) 3164 char process_name[128];
3191 #if defined(WINDOWS) 3192 as_info->pdh_pid = 0;
3193 as_info->pdh_workset = 0;
3194 as_info->pdh_pct_cpu = 0;
3199 #if defined(WINDOWS) 3213 for (i = 0; i < env_num; i++)
3218 putenv (appl_server_shm_key_env_str);
3220 snprintf (as_id_env_str,
sizeof (as_id_env_str),
"%s=%d",
AS_ID_ENV_STR, as_index);
3221 putenv (as_id_env_str);
3226 #if !defined(WINDOWS) 3230 snprintf (process_name,
sizeof (process_name) - 1,
"%s_%s_%d_%d_%d", shm_appl->
broker_name, appl_name,
3235 snprintf (process_name,
sizeof (process_name) - 1,
"%s", appl_name);
3239 snprintf (process_name,
sizeof (process_name) - 1,
"%s_%s_%d", br_info->
name, appl_name, as_index + 1);
3246 #if defined(WINDOWS) 3247 pid = run_child (appl_name);
3249 if (execle (appl_name, process_name,
NULL,
environ) < 0)
3283 if (as_info_p->
pid <= 0)
3319 for (proxy_id = 0; proxy_id < num_proxy; proxy_id++)
3323 for (shard_id = 0; shard_id < proxy_info_p->
num_shard_conn; shard_id++)
3332 "failed to connect database. [%s]\n\n" 3333 "please check your $CUBRID/conf/cubrid_broker.conf or database status.\n\n" "[%%%s]\n" 3375 for (i = 0; i < shm_proxy_p->
num_proxy; i++)
3380 br_info_p->
name, i);
3395 char **env,
int env_num)
3399 char proxy_shm_id_env_str[32];
3400 char proxy_id_env_str[32];
3402 #if !defined (WINDOWS) 3403 char process_name[128];
3410 if (proxy_info_p ==
NULL)
3418 if (shard_info_p ==
NULL)
3427 "max_client %d is greater than %d [%s]\n\n" "please check your $CUBRID/conf/cubrid_broker.conf\n\n" 3436 #if !defined(WINDOWS) 3439 if ((pid = fork ()) < 0)
3449 #if !defined(WINDOWS) 3450 signal (SIGCHLD, SIG_DFL);
3455 for (
i = 0;
i < env_num;
i++)
3460 snprintf (proxy_shm_id_env_str,
sizeof (proxy_shm_id_env_str),
"%s=%d",
PROXY_SHM_KEY_STR, proxy_shm_id);
3461 snprintf (proxy_id_env_str,
sizeof (proxy_id_env_str),
"%s=%d",
PROXY_ID_ENV_STR, proxy_id);
3463 putenv (proxy_shm_id_env_str);
3464 putenv (proxy_id_env_str);
3466 #if !defined(WINDOWS) 3467 snprintf (process_name,
sizeof (process_name) - 1,
"%s_%s_%d", shm_as_p->
broker_name, proxy_exe_name,
3472 #if defined(WINDOWS) 3473 pid = run_child (proxy_exe_name);
3476 if (execle (proxy_exe_name, process_name,
NULL,
environ) < 0)
3478 perror (process_name);
3496 if (proxy_info_p->
pid > 0)
3500 proxy_info_p->
pid = 0;
3518 for (i = 0; i < env_num; i++)
3531 char read_buf[BUFSIZ], col1[128], col2[128];
3535 if (env_file[0] ==
'\0')
3538 env_fp = fopen (env_file,
"r");
3544 while (fgets (read_buf, BUFSIZ, env_fp) !=
NULL)
3546 if (read_buf[0] ==
'#')
3548 read_num = sscanf (read_buf,
"%127s%127s", col1, col2);
3553 env = (
char **) malloc (
sizeof (
char *));
3555 env = (
char **) realloc (env,
sizeof (
char *) * (num + 1));
3559 env[num] = (
char *) malloc (
strlen (col1) +
strlen (col2) + 2);
3560 if (env[num] ==
NULL)
3562 for (num--; num >= 0; num--)
3569 sprintf (env[num],
"%s=%s", col1, col2);
3579 #if !defined(WINDOWS) 3580 #if defined (ENABLE_UNUSED_FUNCTION) 3582 get_cubrid_version ()
3589 strcpy (res_file,
"ux_ver.uc_tmp");
3592 sprintf (cmd,
"cubrid_rel > %s", res_file);
3595 fp = fopen (res_file,
"r");
3603 n = fread (buf, 1,
sizeof (buf) - 1, fp);
3604 if (n > 0 && n <
sizeof (buf))
3607 p = strstr (buf,
"Release");
3611 if (sscanf (p,
"%d%*c%d", &major, &minor) == 2)
3629 char cmd_buf[BUFSIZ];
3631 sprintf (cmd_buf,
"%s.%02d%02d%02d.%02d%02d", error_log_file, ct->tm_year, ct->tm_mon + 1, ct->tm_mday, ct->tm_hour,
3633 rename (error_log_file, cmd_buf);
3644 for (proxy_index = 0; proxy_index < proxy_p->
num_proxy; proxy_index++)
3658 if (proxy_info_p ==
NULL)
3676 if (strcasecmp (param_name,
"SHARD_PROXY_LOG") == 0)
3678 char proxy_log_mode;
3682 if (proxy_log_mode < 0)
3694 #if defined (ENABLE_UNUSED_FUNCTION) 3696 shard_shm_set_param_shard (
T_PROXY_INFO *
proxy_info_p,
const char *param_name,
const char *param_value,
int shard_id)
3703 if (shm_as_p ==
NULL)
3714 shard_shm_set_param_shard_internal (shard_conn_info_p, param_name, param_value);
3717 else if (shard_id < proxy_info_p->num_shard_conn)
3721 shard_shm_set_param_shard_internal (shard_conn_info_p, param_name, param_value);
3734 shard_shm_set_param_shard_internal (
T_SHARD_CONN_INFO * shard_conn_info_p,
const char *param_name,
3735 const char *param_value)
3737 if (strcasecmp (param_name,
"SHARD_DB_USER") == 0)
3739 strncpy (shard_conn_info_p->
db_user, param_value, sizeof (shard_conn_info_p->
db_user) - 1);
3741 else if (strcasecmp (param_name,
"SHARD_DB_PASSWORD") == 0)
3750 shard_shm_set_param_shard_in_proxy (
T_SHM_PROXY * proxy_p,
const char *param_name,
const char *param_value,
3758 for (proxy_index = 0; proxy_index < proxy_p->
num_proxy; proxy_index++)
3762 if (shard_shm_set_param_shard (proxy_info_p, param_name, param_value, shard_id) < 0)
3772 if (proxy_info_p ==
NULL)
3778 if (shard_shm_set_param_shard (proxy_info_p, param_name, param_value, shard_id) < 0)
3790 const char *param_value,
int as_number)
3826 if (strcasecmp (param_name,
"SQL_LOG") == 0)
3832 if (sql_log_mode < 0)
3841 else if (strcasecmp (param_name,
"SLOW_LOG") == 0)
3847 if (slow_log_mode < 0)
3856 else if (strcasecmp (param_name,
"ACCESS_MODE") == 0 || strcasecmp (param_name,
"CONNECT_ORDER") == 0
3857 || strcasecmp (param_name,
"TRIGGER_ACTION") == 0)
3868 int shard_id,
int as_number)
3875 for (shard_index = 0; shard_index < proxy_info_p->
num_shard_conn; shard_index++)
3889 if (shard_info_p ==
NULL)
3906 int shard_id,
int as_number)
3913 for (proxy_index = 0; proxy_index < proxy_p->
num_proxy; proxy_index++)
3927 if (proxy_info_p ==
NULL)
3947 unsigned int required_fd_num = 0;
3950 struct rlimit sys_limit;
3953 if (proxy_info_p ==
NULL)
3960 if (shard_info_p ==
NULL)
3966 required_fd_num += proxy_info_p->max_context;
3967 required_fd_num += proxy_info_p->max_shard * shard_info_p->
max_appl_server;
3970 error = getrlimit (RLIMIT_NOFILE, &sys_limit);
3977 if (sys_limit.rlim_cur < required_fd_num)
3979 sprintf (
admin_err_msg,
"%s (current : %d, required : %d)\n",
3980 "Maximum file descriptor number is less than the required value.", (
int) sys_limit.rlim_cur,
3985 if (sys_limit.rlim_max < required_fd_num)
3987 sprintf (
admin_err_msg,
"%s (current : %d, required : %d)\n",
3988 "Maximum file descriptor number is less than the required value.", (
int) sys_limit.rlim_max,
4005 snprintf (env_str,
sizeof (env_str),
"%s_SHARD_DB_PASSWORD", upper_broker_name);
4007 p = getenv (env_str);
4021 for (i = 0; i < len - 1; i++)
4023 upper_str[
i] = (char) toupper (value[i]);
4025 upper_str[
i] =
'\0';
#define SLEEP_MILISEC(sec, msec)
void ut_cd_work_dir(void)
int long_transaction_time
static void get_shard_db_password(T_BROKER_INFO *br_info_p)
char access_log_file[CONF_LOG_FILE_LEN]
unsigned char address_list[ACL_MAX_IP_COUNT *IP_BYTE_COUNT]
char jdbc_cache_only_hint
static int make_sp_value(SP_VALUE *value_p, char *shard_key)
char database_name[SRV_CON_DBNAME_SIZE]
static int shard_shm_check_max_file_open_limit(T_BROKER_INFO *br_info, T_SHM_PROXY *proxy_p)
T_SHM_PROXY * shm_proxy_p
char shard_key_library_name[SHM_PROXY_NAME_MAX]
#define PATH_INFO_ENV_STR
static int shard_shm_set_param_as_in_shard(T_PROXY_INFO *proxy_info_p, const char *param_name, const char *param_value, int shard_id, int as_number)
int access_control_read_config_file(T_SHM_APPL_SERVER *shm_appl, char *filename, char *admin_err_msg)
#define SHM_APPL_SERVER_NAME_MAX
double ut_time_string_to_sec(const char *time_str, const char *default_unit)
int max_prepared_stmt_count
char db_name[MAX_DBNAME_LENGTH]
T_SHARD_INFO * shard_shm_find_shard_info(T_PROXY_INFO *proxy_info_p, int shard_id)
int getopt(int, char *const *, const char *)
int admin_start_cmd(T_BROKER_INFO *br_info, int br_num, int master_shm_id, bool acl_flag, char *acl_file)
int uw_get_error_code(void)
T_SHARD_CONN shard_conn[MAX_SHARD_CONN]
T_PROXY_INFO * shard_shm_find_proxy_info(T_SHM_PROXY *proxy_p, int proxy_id)
char port_name[SHM_APPL_SERVER_NAME_MAX]
int parse_int(int *ret_p, const char *str_p, int base)
unsigned char cas_clt_ip[4]
int advance_activate_flag
#define MAKE_FILEPATH(dest, src, dest_len)
#define SHM_OPEN_ERR_MSG(BUF, ERRCODE, OSERRCODE)
bool ut_is_appl_server_ready(int pid, char *ready_flag)
int uw_get_os_error_code(void)
int max_num_delayed_hosts_lookup
char broker_name[BROKER_NAME_LEN]
int admin_conf_change(int master_shm_id, const char *br_name, const char *conf_name, const char *conf_value, int as_number)
static T_BROKER_INFO * br_info_p
int admin_add_cmd(int master_shm_id, const char *broker)
#define CAS_LOG_RESET_REOPEN
int conf_get_value_access_mode(const char *value)
#define MASTER_SHM_KEY_ENV_STR
char slow_log_dir[CONF_LOG_FILE_LEN]
int mysql_keepalive_interval
#define CLT_APPL_NAME_ENV_STR
#define BROKER_INFO_NAME_MAX
ACCESS_INFO access_info[ACL_MAX_ITEM_COUNT]
static int broker_create_dir(const char *new_dir)
#define APPL_SERVER_SHM_KEY_STR
#define CAS_LOG_RESET_REMOVE
static int check_shard_as_conn(T_SHM_APPL_SERVER *shm_as_p, T_SHARD_INFO *shard_info_p)
void ut_cd_root_dir(void)
#define DEFAULT_MAX_NUM_DELAYED_HOSTS_LOOKUP
#define CONTENT_LENGTH_ENV_STR
#define LONG_QUERY_TIME_LIMIT
int appl_server_hard_limit
char broker_name[BROKER_NAME_LEN]
#define MAKE_VERSION(MAJOR, MINOR)
int access_control_set_shm(T_SHM_APPL_SERVER *shm_as_p, T_BROKER_INFO *br_info_p, T_SHM_BROKER *shm_br, char *admin_err_msg)
static int shard_shm_set_param_as_internal(T_APPL_SERVER_INFO *as_info, const char *param_name, const char *param_value)
int appl_server_hard_limit
char db_user[SRV_CON_DBUSER_SIZE]
char jdbc_cache_only_hint
#define PORT_NUMBER_ENV_STR
int admin_info_cmd(int master_shm_id)
static void as_inactivate(T_APPL_SERVER_INFO *as_info_p, char *broker_name, int shard_flag)
char * get_cubrid_file(T_CUBRID_FILE_ID fid, char *buf, size_t len)
#define APPL_SERVER_CAS_ORACLE
int long_transaction_time
char db_password[SRV_CON_DBPASSWD_SIZE]
unsigned short cas_clt_port
int ut_kill_as_process(int pid, char *broker_name, int as_index, int shard_flag)
#define NUM_OF_DIGITS(NUMBER)
#define UTS_STATUS_CON_WAIT
static int proxy_activate(T_BROKER_INFO *br_info_p, T_SHM_PROXY *shm_proxy_p, T_SHM_APPL_SERVER *shm_as_p, char **env, int env_num)
#define CON_STATUS_LOCK_INIT(AS_INFO)
#define MAX_ACCESS_LOG_MAX_SIZE
char log_dir[CONF_LOG_FILE_LEN]
int admin_acl_reload_cmd(int master_shm_id, const char *broker_name)
int mysql_keepalive_interval
static bool key_isdigit(const char *value)
const char * uw_get_error_message(int error_code, int os_error_code)
#define MAX_QUERY_TIMEOUT_LIMIT
void uw_shm_detach(void *p)
char clt_appl_name[APPL_NAME_LENGTH]
T_SHM_SHARD_KEY * shm_key_p
#define DELIMITER_ENV_STR
#define LONG_TRANSACTION_TIME_LIMIT
#define REQUEST_METHOD_ENV_STR
int uw_shm_destroy(int shm_key)
char * envvar_bindir_file(char *path, size_t size, const char *filename)
time_t transaction_start_time
int max_prepared_stmt_count
double ut_size_string_to_kbyte(const char *size_str, const char *default_unit)
#define QUERY_STRING_ENV_STR
#define SHM_PROXY_NAME_MAX
static int br_inactivate(T_BROKER_INFO *)
#define MIN_MYSQL_KEEPALIVE_INTERVAL
char db_conn_info[MAX_CONN_INFO_LENGTH]
char auto_add_appl_server
char clt_req_path_info[APPL_NAME_LENGTH]
#define MAX_PROXY_LOG_MAX_SIZE
int admin_reset_cmd(int master_shm_id, const char *broker_name)
int proxy_find_shard_id_by_hint_value(SP_VALUE *value_p, const char *key_column)
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]
int conf_get_value_table_on_off(const char *value)
#define CON_STATUS_LOCK_DESTROY(AS_INFO)
char database_host[CUB_MAXHOSTNAMELEN]
char preferred_hosts[BROKER_INFO_NAME_MAX]
static T_SHM_BROKER * shm_br
char admin_err_msg[ADMIN_ERR_MSG_SIZE]
T_PROXY_INFO * proxy_info_p
int conf_get_value_proxy_log_mode(const char *value)
static void error(const char *msg)
static int shard_shm_set_param_proxy(T_SHM_PROXY *proxy_p, const char *param_name, const char *param_value, int proxy_id)
#define OUT_FILE_NAME_ENV_STR
#define PROXY_RESERVED_FD
#define IS_APPL_SERVER_TYPE_CAS(x)
char dbname[ACL_MAX_DBNAME_LENGTH]
#define snprintf_dots_truncate(dest, max_len,...)
int max_num_delayed_hosts_lookup
char shard_db_password[SRV_CON_DBPASSWD_SIZE]
T_SHARD_KEY shard_key[MAX_SHARD_KEY]
int conf_get_value_keep_con(const char *value)
static int br_activate(T_BROKER_INFO *br_info, int master_shm_id, T_SHM_BROKER *shm_br)
int conf_get_value_connect_order(const char *value)
static int proxy_activate_internal(int proxy_shm_id, T_SHM_APPL_SERVER *shm_as_p, T_SHM_PROXY *shm_proxy_p, int proxy_id, char **env, int env_num)
char preferred_hosts[SHM_APPL_SERVER_NAME_MAX]
static void get_upper_str(char *upper_str, int len, char *value)
static int shard_shm_set_param_proxy_internal(T_PROXY_INFO *proxy_info_p, const char *param_name, const char *param_value)
static int shard_shm_set_param_as(T_PROXY_INFO *proxy_info_p, T_SHARD_INFO *shard_info_p, const char *param_name, const char *param_value, int as_number)
#define PROXY_SHM_KEY_STR
void dir_repath(char *path, size_t path_len)
static int check_shard_conn(T_SHM_APPL_SERVER *shm_as_p, T_SHM_PROXY *shm_proxy_p)
static void print_usage(void)
void ut_get_proxy_port_name(char *port_name, char *broker_name, int proxy_id, int len)
char key_column[SHARD_KEY_COLUMN_LEN]
char name[BROKER_NAME_LEN]
T_APPL_SERVER_INFO * as_info
#define IS_NOT_APPL_SERVER_TYPE_CAS(x)
int admin_on_cmd(int master_shm_id, const char *broker_name)
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_SHM_APPL_SERVER * broker_shm_initialize_shm_as(T_BROKER_INFO *br_info_p, T_SHM_PROXY *shm_proxy_p)
struct sp_value::@40 string
static int shard_shm_set_param_as_in_proxy(T_SHM_PROXY *proxy_p, const char *param_name, const char *param_value, int proxy_id, int shard_id, int as_number)
int admin_del_cas_log(int master_shmid, const char *broker, int asid)
void ut_get_as_port_name(char *port_name, char *broker_name, int as_id, int len)
T_APPL_SERVER_INFO as_info[APPL_SERVER_NUM_LIMIT]
int admin_stop_cmd(int master_shm_id)
#define ADMIN_ERR_MSG_SIZE
int register_fn_get_shard_key(void)
char port_name[SHM_PROXY_NAME_MAX]
#define CONF_LOG_FILE_LEN
T_SHM_BROKER * broker_shm_initialize_shm_broker(int master_shm_id, T_BROKER_INFO *br_info, int br_num, int acl_flag, char *acl_file)
void set_cubrid_file(T_CUBRID_FILE_ID fid, char *value)
#define APPL_SERVER_NAME_MAX_SIZE
int admin_acl_status_cmd(int master_shm_id, const char *broker_name)
#define REMOTE_ADDR_ENV_STR
char source_env[CONF_LOG_FILE_LEN]
#define SESSION_REQUEST_ENV_STR
char * get_cubrid_file_ptr(T_CUBRID_FILE_ID fid)
T_SHM_APPL_SERVER * shm_as_p
void * uw_shm_open(int shm_key, int which_shm, T_SHM_MODE shm_mode)
#define MAX_SQL_LOG_MAX_SIZE
char dbuser[ACL_MAX_DBUSER_LENGTH]
int conf_get_value_sql_log_mode(const char *value)
static char shard_db_password_env_str[MAX_BROKER_NUM][128]
char slow_log_dir[CONF_LOG_FILE_LEN]
static bool full_info_flag
void broker_config_dump(FILE *fp, const T_BROKER_INFO *br_info, int num_broker, int br_shm_id)
T_SHM_SHARD_CONN * shm_conn_p
int ut_kill_broker_process(int pid, char *broker_name)
#define MEMBER_SIZE(TYPE, MEMBER)
char log_dir[CONF_LOG_FILE_LEN]
int admin_drop_cmd(int master_shm_id, const char *broker)
T_SHARD_CONN_INFO shard_conn_info[SHARD_INFO_SIZE_LIMIT]
static void rename_error_log_file_name(char *error_log_file, struct tm *ct)
char err_log_dir[CONF_LOG_FILE_LEN]
int ut_kill_proxy_process(int pid, char *broker_name, int proxy_id)
char access_control_file[SHM_BROKER_PATH_MAX]
static void as_activate(T_SHM_BROKER *shm_br, T_BROKER_INFO *br_info, T_SHM_APPL_SERVER *shm_as_p, T_APPL_SERVER_INFO *as_info_p, int as_idex, char **env, int env_num)
time_t last_access_time[ACL_MAX_IP_COUNT]
int admin_restart_cmd(int master_shm_id, const char *broker, int as_index)
int admin_getid_cmd(int master_shm_id, int argc, const char **argv)
static void proxy_inactivate(T_BROKER_INFO *br_info_p, T_PROXY_INFO *proxy_info_p)
char ip_files[LINE_MAX+1]
int uw_sem_destroy(sem_t *sem)
static void free_env(char **env, int env_num)
char db_name[MAX_DBNAME_LENGTH]
#define APPL_SERVER_NUM_LIMIT
#define SERVICE_READY_WAIT_COUNT
T_SHM_PROXY * shard_shm_initialize_shm_proxy(T_BROKER_INFO *br_info_p)
int admin_off_cmd(int master_shm_id, const char *broker_name)