static THREAD_RET_T THREAD_CALLING_CONVENTION hm_thread_health_checker (void *arg) { int i; unsigned char *ip_addr; int port; time_t start_time; time_t elapsed_time; while (1) { start_time = time (NULL); for (i = 0; i < host_status_count; i++) { ip_addr = host_status[i].host.ip_addr; port = host_status[i].host.port; if (!host_status[i].is_reachable && net_check_broker_alive (ip_addr, port, BROKER_HEALTH_CHECK_TIMEOUT)) { hm_set_host_status_by_addr (ip_addr, port, true); } } elapsed_time = time (NULL) - start_time; if (elapsed_time < MONITORING_INTERVAL) { SLEEP_MILISEC (MONITORING_INTERVAL - elapsed_time, 0); } } return (THREAD_RET_T) 0; }
void record_system_info (sys_stat *sstat) { #ifdef HOST_MONITOR_PROC static kstat_ctl_t *kc = NULL; while (kc == NULL) { kc = kstat_open (); SLEEP_MILISEC (0, 100); } while (get_system_info (kc, sstat) < 0) { SLEEP_MILISEC (0, 100); } #endif }
int cmd_stop_server (char *dbname, char *err_buf, int err_buf_size) { char strbuf[1024]; int t, timeout = 30, interval = 3; /* sec */ char cmd_name[CUBRID_CMD_NAME_LEN]; const char *argv[5]; if (err_buf) { memset (err_buf, 0, err_buf_size); } cmd_name[0] = '\0'; #if !defined (DO_NOT_USE_CUBRIDENV) sprintf (cmd_name, "%s/%s%s", sco.szCubrid, CUBRID_DIR_BIN, UTIL_CUBRID); #else sprintf (cmd_name, "%s/%s", CUBRID_BINDIR, UTIL_CUBRID); #endif argv[0] = cmd_name; argv[1] = PRINT_CMD_SERVER; argv[2] = PRINT_CMD_STOP; argv[3] = dbname; argv[4] = NULL; if (run_child (argv, 1, NULL, NULL, NULL, NULL) < 0) { /* stop_server */ if (err_buf) { sprintf (strbuf, "Command returned error : %s %s %s %s", cmd_name, PRINT_CMD_SERVER, PRINT_CMD_STOP, dbname); strncpy (err_buf, strbuf, err_buf_size - 1); } return -1; } for (t = timeout; t > 0; t -= interval) { SLEEP_MILISEC (interval, 0); if (!uIsDatabaseActive (dbname)) { return 0; } } if (err_buf) { sprintf (strbuf, "%s server hasn't shut down after %d seconds", dbname, timeout); strncpy (err_buf, strbuf, err_buf_size - 1); } return -1; }
void cmd_start_master (void) { int pid; char cmd_name[CUBRID_CMD_NAME_LEN]; const char *argv[2]; cmd_name[0] = '\0'; #if !defined (DO_NOT_USE_CUBRIDENV) sprintf (cmd_name, "%s/%s%s", sco.szCubrid, CUBRID_DIR_BIN, UTIL_MASTER_NAME); #else sprintf (cmd_name, "%s/%s", CUBRID_BINDIR, UTIL_MASTER_NAME); #endif argv[0] = cmd_name; argv[1] = NULL; pid = run_child (argv, 0, NULL, NULL, NULL, NULL); /* cub_master */ SLEEP_MILISEC (0, 500); }
static void * thr_main (void *arg) { int self_index = (int) arg; while (process_flag) { if (work_msg[self_index].filename == NULL) { SLEEP_MILISEC (0, 100); } else { log_top (work_msg[self_index].fp, work_msg[self_index].filename); fclose (work_msg[self_index].fp); work_msg[self_index].fp = NULL; work_msg[self_index].filename = NULL; } } return NULL; }
static int log_top_query (int argc, char *argv[], int arg_start) { FILE *fp; char *filename; int i; #ifdef MT_MODE T_THREAD thrid; int j; #endif #ifdef MT_MODE query_info_mutex_init (); #endif #ifdef MT_MODE work_msg = MALLOC (sizeof (T_WORK_MSG) * num_thread); if (work_msg == NULL) { fprintf (stderr, "malloc error\n"); return -1; } memset (work_msg, 0, sizeof (T_WORK_MSG *) * num_thread); for (i = 0; i < num_thread; i++) THREAD_BEGIN (thrid, thr_main, (void *) i); #endif for (i = arg_start; i < argc; i++) { filename = argv[i]; fprintf (stdout, "%s\n", filename); fp = fopen (filename, "r"); if (fp == NULL) { fprintf (stderr, "%s[%s]\n", strerror (errno), filename); #ifdef MT_MODE process_flag = 0; #endif return -1; } #ifdef MT_MODE while (1) { for (j = 0; j < num_thread; j++) { if (work_msg[j].filename == NULL) { work_msg[j].fp = fp; work_msg[j].filename = filename; break; } } if (j == num_thread) SLEEP_MILISEC (1, 0); else break; } #else log_top (fp, filename); fclose (fp); #endif } #ifdef MT_MODE process_flag = 0; #endif if (sql_info_file != NULL) { fprintf (stdout, "read sql info file...\n"); if (sql_list_make (sql_info_file) < 0) { return -1; } } fprintf (stdout, "print results...\n"); query_info_print (); return 0; }