CUBRID Engine
latest
|
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <netdb.h>
#include <sys/param.h>
#include <sys/resource.h>
#include <netinet/in.h>
#include <unistd.h>
#include <fcntl.h>
#include <syslog.h>
#include <pthread.h>
#include "utility.h"
#include "porting.h"
#include "error_manager.h"
#include "connection_globals.h"
#include "connection_cl.h"
#include "tcp.h"
#include "master_util.h"
#include "master_request.h"
#include "master_heartbeat.h"
#include "environment_variable.h"
#include "message_catalog.h"
#include "dbi.h"
#include "util_func.h"
Go to the source code of this file.
Variables | |
struct timeval * | css_Master_timeout = NULL |
int | css_Master_timeout_value_in_seconds = 4 |
int | css_Master_timeout_value_in_microseconds = 500 |
time_t | css_Start_time |
int | css_Total_request_count = 0 |
SOCKET | css_Master_socket_fd [2] = { INVALID_SOCKET, INVALID_SOCKET } |
SOCKET_QUEUE_ENTRY * | css_Master_socket_anchor = NULL |
pthread_mutex_t | css_Master_socket_anchor_lock |
pthread_mutex_t | css_Master_er_log_lock = PTHREAD_MUTEX_INITIALIZER |
pthread_mutex_t | css_Master_er_log_enable_lock = PTHREAD_MUTEX_INITIALIZER |
bool | css_Master_er_log_enabled = true |
|
static |
Definition at line 326 of file master.c.
References css_accept_server_request(), css_add_request_to_socket_queue(), css_make_conn(), css_receive_data(), css_return_entry_of_server(), css_tcp_master_datagram(), socket_queue_entry::env_var, free_and_init, INVALID_SOCKET, NO_ERRORS, NULL, socket_queue_entry::pid, READ_WRITE, SERVER_REQUEST_ACCEPTED, strlen, and socket_queue_entry::version_string.
Referenced by css_register_new_server().
|
static |
Definition at line 395 of file master.c.
References socket_queue_entry::conn_ptr, css_accept_server_request(), css_free_conn(), css_make_conn(), css_receive_data(), css_tcp_master_datagram(), socket_queue_entry::fd, free_and_init, INVALID_SOCKET, NO_ERRORS, NULL, SERVER_REQUEST_ACCEPTED, strlen, and socket_queue_entry::version_string.
Referenced by css_register_new_server(), and css_register_new_server2().
|
static |
Definition at line 309 of file master.c.
References css_conn_entry::fd, and htonl().
Referenced by css_accept_new_request(), css_accept_old_request(), css_register_new_server(), and css_register_new_server2().
SOCKET_QUEUE_ENTRY* css_add_request_to_socket_queue | ( | CSS_CONN_ENTRY * | conn_p, |
int | info_p, | ||
char * | name_p, | ||
SOCKET | fd, | ||
int | fd_type, | ||
int | pid, | ||
SOCKET_QUEUE_ENTRY ** | anchor_p | ||
) |
Definition at line 1329 of file master.c.
References socket_queue_entry::conn_ptr, socket_queue_entry::db_error, socket_queue_entry::env_var, socket_queue_entry::error_p, FALSE, socket_queue_entry::fd, socket_queue_entry::fd_type, socket_queue_entry::ha_mode, socket_queue_entry::info_p, IS_MASTER_CONN_NAME_HA_APPLYLOG, IS_MASTER_CONN_NAME_HA_COPYLOG, IS_MASTER_CONN_NAME_HA_SERVER, socket_queue_entry::name, socket_queue_entry::next, NULL, p, socket_queue_entry::pid, pid, socket_queue_entry::port_id, socket_queue_entry::queue_p, strlen, TRUE, and socket_queue_entry::version_string.
Referenced by css_accept_new_request(), css_process_new_connection(), css_register_new_server(), css_register_new_server2(), and main().
|
static |
Definition at line 1015 of file master.c.
References CONN_CLOSED, socket_queue_entry::conn_ptr, css_Master_socket_anchor_lock, css_Master_socket_fd, css_remove_entry_by_conn(), socket_queue_entry::error_p, socket_queue_entry::fd, socket_queue_entry::ha_mode, hb_cleanup_conn_and_start_process(), IS_INVALID_SOCKET, socket_queue_entry::next, NULL, pthread_mutex_lock, pthread_mutex_unlock, rv, and css_conn_entry::status.
Referenced by css_master_loop().
|
static |
Definition at line 937 of file master.c.
References css_master_accept(), css_Master_socket_anchor_lock, css_Master_socket_fd, css_process_heartbeat_request(), css_process_info_request(), css_process_new_connection(), css_remove_entry_by_conn(), IS_INVALID_SOCKET, socket_queue_entry::next, pthread_mutex_lock, pthread_mutex_unlock, and rv.
Referenced by css_master_loop().
|
static |
Definition at line 1004 of file master.c.
Referenced by css_master_loop().
|
static |
Definition at line 1453 of file master.c.
References ARG_FILE_LINE, css_get_max_socket_fds(), ER_WARNING_SEVERITY, ERR_CSS_CANNOT_FORK, MASTER_ER_SET, and os_set_signal_handler().
Referenced by main().
|
static |
Definition at line 854 of file master.c.
References socket_queue_entry::fd, IS_INVALID_SOCKET, and socket_queue_entry::next.
Referenced by css_enroll_master_exception_sockets().
|
static |
Definition at line 881 of file master.c.
References css_enroll_exception_sockets().
Referenced by css_master_loop().
|
static |
Definition at line 813 of file master.c.
References css_enroll_read_sockets().
Referenced by css_master_loop().
|
static |
Definition at line 840 of file master.c.
References css_enroll_write_sockets().
Referenced by css_master_loop().
|
static |
Definition at line 785 of file master.c.
References socket_queue_entry::fd, socket_queue_entry::fd_type, IS_INVALID_SOCKET, socket_queue_entry::next, and WRITE_ONLY.
Referenced by css_enroll_master_read_sockets().
|
static |
Definition at line 827 of file master.c.
Referenced by css_enroll_master_write_sockets().
|
static |
Definition at line 1256 of file master.c.
References socket_queue_entry::conn_ptr, css_free_conn(), socket_queue_entry::env_var, free_and_init, socket_queue_entry::name, and socket_queue_entry::version_string.
Referenced by css_remove_entry_by_conn().
void css_master_cleanup | ( | int | sig | ) |
Definition at line 218 of file master.c.
References ARG_FILE_LINE, css_get_master_domain_path(), css_Master_socket_fd, css_shutdown_socket(), ER_HB_STOPPED, ER_NOTIFICATION_SEVERITY, HA_DISABLED, and MASTER_ER_SET.
Referenced by css_master_init(), hb_resource_job_demote_confirm_shutdown(), hb_resource_job_demote_start_shutdown(), hb_resource_job_proc_start(), hb_start_util_process(), and main().
|
static |
|
static |
Definition at line 241 of file master.c.
References ARG_FILE_LINE, css_master_cleanup(), css_Master_socket_anchor_lock, css_tcp_master_open(), ER_ERROR_SEVERITY, ER_GENERIC_ERROR, MASTER_ER_SET, NULL, os_set_signal_handler(), and pthread_mutex_init.
Referenced by main().
|
static |
Definition at line 1078 of file master.c.
References css_check_master_socket_exception(), css_check_master_socket_input(), css_check_master_socket_output(), css_enroll_master_exception_sockets(), css_enroll_master_read_sockets(), css_enroll_master_write_sockets(), css_master_select_error(), css_master_timeout(), css_Master_timeout_value_in_microseconds, css_Master_timeout_value_in_seconds, and rc.
Referenced by main().
|
static |
Definition at line 892 of file master.c.
References socket_queue_entry::conn_ptr, css_Master_socket_anchor_lock, css_remove_entry_by_conn(), socket_queue_entry::fd, socket_queue_entry::ha_mode, hb_cleanup_conn_and_start_process(), IS_INVALID_SOCKET, socket_queue_entry::next, pthread_mutex_lock, pthread_mutex_unlock, and rv.
Referenced by css_master_loop().
|
static |
Definition at line 163 of file master.c.
References socket_queue_entry::conn_ptr, css_Master_socket_anchor_lock, css_Master_timeout, css_remove_entry_by_conn(), socket_queue_entry::fd, socket_queue_entry::ha_mode, hb_cleanup_conn_and_start_process(), socket_queue_entry::next, socket_queue_entry::pid, pthread_mutex_lock, pthread_mutex_unlock, and rv.
Referenced by css_master_loop().
|
static |
Definition at line 727 of file master.c.
References css_add_request_to_socket_queue(), css_check_magic(), css_free_conn(), css_make_conn(), css_receive_request(), css_register_new_server(), css_register_new_server2(), css_send_to_existing_server(), css_Total_request_count, DATA_REQUEST, INFO_REQUEST, NO_ERRORS, NULL, READ_WRITE, SERVER_REQUEST, SERVER_REQUEST_NEW, and SERVER_START_NEW_CLIENT.
Referenced by css_check_master_socket_input().
|
static |
Definition at line 441 of file master.c.
References css_accept_new_request(), css_accept_old_request(), css_accept_server_request(), css_add_request_to_socket_queue(), css_free_conn(), css_receive_data(), css_reject_server_request(), css_return_entry_of_server(), socket_queue_entry::fd, css_conn_entry::fd, free_and_init, IS_INVALID_SOCKET, NO_ERRORS, NULL, READ_WRITE, SERVER_ALREADY_EXISTS, and SERVER_REQUEST_ACCEPTED.
Referenced by css_process_new_connection().
|
static |
Definition at line 502 of file master.c.
References css_accept_old_request(), css_accept_server_request(), css_add_request_to_socket_queue(), css_free_conn(), css_net_recv(), css_receive_data(), css_reject_server_request(), css_return_entry_of_server(), socket_queue_entry::env_var, socket_queue_entry::fd, css_conn_entry::fd, free_and_init, IS_INVALID_SOCKET, NO_ERRORS, ntohl(), NULL, socket_queue_entry::pid, socket_queue_entry::port_id, READ_WRITE, SERVER_ALREADY_EXISTS, SERVER_REQUEST_ACCEPTED_NEW, strlen, and socket_queue_entry::version_string.
Referenced by css_process_new_connection().
|
static |
Definition at line 278 of file master.c.
References css_send_data(), and htonl().
Referenced by css_send_to_existing_server().
|
static |
Definition at line 293 of file master.c.
References css_conn_entry::fd, and htonl().
Referenced by css_register_new_server(), and css_register_new_server2().
void css_remove_entry_by_conn | ( | CSS_CONN_ENTRY * | conn_p, |
SOCKET_QUEUE_ENTRY ** | anchor_p | ||
) |
Definition at line 1287 of file master.c.
References css_free_entry(), socket_queue_entry::next, NULL, and p.
Referenced by css_check_master_socket_exception(), css_check_master_socket_input(), css_cleanup_info_connection(), css_master_select_error(), css_master_timeout(), css_send_to_existing_server(), hb_cleanup_conn_and_start_process(), hb_register_new_process(), and hb_resource_shutdown_all_ha_procs().
SOCKET_QUEUE_ENTRY* css_return_entry_by_conn | ( | CSS_CONN_ENTRY * | conn_p, |
SOCKET_QUEUE_ENTRY ** | anchor_p | ||
) |
Definition at line 1424 of file master.c.
References socket_queue_entry::conn_ptr, socket_queue_entry::next, NULL, and p.
Referenced by hb_get_process_info_string(), hb_resource_demote_start_shutdown_server_proc(), hb_resource_job_proc_dereg(), and hb_resource_shutdown_all_ha_procs().
SOCKET_QUEUE_ENTRY* css_return_entry_of_server | ( | char * | name_p, |
SOCKET_QUEUE_ENTRY * | anchor_p | ||
) |
Definition at line 1386 of file master.c.
References IS_MASTER_CONN_NAME_HA_SERVER, socket_queue_entry::name, socket_queue_entry::next, NULL, and p.
Referenced by css_accept_new_request(), css_process_server_state(), css_register_new_server(), css_register_new_server2(), and css_send_to_existing_server().
|
static |
Definition at line 612 of file master.c.
References css_transfer_fd().
Referenced by css_send_to_existing_server().
|
static |
Definition at line 635 of file master.c.
References socket_queue_entry::conn_ptr, css_free_conn(), css_receive_data(), css_reject_client_request(), css_remove_entry_by_conn(), css_return_entry_of_server(), css_send_data(), css_send_new_request_to_server(), socket_queue_entry::fd, css_conn_entry::fd, free_and_init, socket_queue_entry::ha_mode, hb_is_deactivation_started(), hb_is_hang_process(), htonl(), IS_INVALID_SOCKET, NO_ERRORS, NULL, socket_queue_entry::port_id, SERVER_CONNECTED_NEW, SERVER_HANG, SERVER_NOT_FOUND, and SERVER_STARTED.
Referenced by css_process_new_connection().
int main | ( | int | argc, |
char ** | argv | ||
) |
Definition at line 1122 of file master.c.
References cleanup(), css_add_request_to_socket_queue(), css_daemon_start(), css_does_master_exist(), css_make_conn(), css_master_cleanup(), css_master_error(), css_master_init(), css_master_loop(), css_Master_socket_fd, css_Start_time, css_windows_shutdown(), css_windows_startup(), CUB_MAXHOSTNAMELEN, db_error_string(), envvar_get(), ER_ALL_FINAL, er_final(), er_init(), ER_NEVER_EXIT, GETHOSTNAME, HA_DISABLED, hb_master_init(), MASTER_MSG_DUPLICATE, MASTER_MSG_EXITING, MASTER_MSG_NO_PARAMETERS, MASTER_MSG_PROCESS_ERROR, MASTER_MSG_STARTING, master_util_config_startup(), MSGCAT_CATALOG_UTILS, msgcat_final(), msgcat_message(), MSGCAT_UTIL_SET_MASTER, NO_ERROR, NULL, os_set_signal_handler(), PRINT_AND_LOG_ERR_MSG, READ_WRITE, TPRINTF, util_log_write_errstr(), and utility_initialize().
pthread_mutex_t css_Master_er_log_enable_lock = PTHREAD_MUTEX_INITIALIZER |
Definition at line 130 of file master.c.
Referenced by hb_disable_er_log(), hb_enable_er_log(), and hb_get_admin_info_string().
bool css_Master_er_log_enabled = true |
Definition at line 131 of file master.c.
Referenced by hb_disable_er_log(), hb_enable_er_log(), and hb_get_admin_info_string().
pthread_mutex_t css_Master_er_log_lock = PTHREAD_MUTEX_INITIALIZER |
SOCKET_QUEUE_ENTRY* css_Master_socket_anchor = NULL |
Definition at line 125 of file master.c.
Referenced by css_cleanup_info_connection(), css_process_all_count_info(), css_process_all_list_info(), css_process_get_server_ha_mode(), css_process_kill_immediate(), css_process_kill_slave(), css_process_server_count_info(), css_process_server_list_info(), css_process_server_state(), css_process_shutdown(), css_process_stop_shutdown(), hb_cleanup_conn_and_start_process(), hb_get_process_info_string(), hb_register_new_process(), hb_resource_demote_start_shutdown_server_proc(), hb_resource_job_proc_dereg(), and hb_resource_shutdown_all_ha_procs().
pthread_mutex_t css_Master_socket_anchor_lock |
Definition at line 127 of file master.c.
Referenced by css_check_master_socket_exception(), css_check_master_socket_input(), css_master_init(), css_master_select_error(), css_master_timeout(), hb_resource_job_change_mode(), hb_resource_job_cleanup_all(), hb_resource_job_demote_start_shutdown(), hb_resource_job_proc_dereg(), and hb_thread_check_disk_failure().
SOCKET css_Master_socket_fd[2] = { INVALID_SOCKET, INVALID_SOCKET } |
Definition at line 122 of file master.c.
Referenced by css_check_master_socket_exception(), css_check_master_socket_input(), css_master_cleanup(), css_process_kill_master(), and main().
struct timeval* css_Master_timeout = NULL |
Definition at line 111 of file master.c.
Referenced by css_master_timeout(), css_process_shutdown(), css_process_shutdown_time_info(), and css_process_stop_shutdown().
int css_Master_timeout_value_in_microseconds = 500 |
Definition at line 113 of file master.c.
Referenced by css_master_loop().
int css_Master_timeout_value_in_seconds = 4 |
Definition at line 112 of file master.c.
Referenced by css_master_loop().
time_t css_Start_time |
Definition at line 118 of file master.c.
Referenced by css_process_start_time_info(), and main().
int css_Total_request_count = 0 |
Definition at line 119 of file master.c.
Referenced by css_process_new_connection(), and css_process_request_count_info().