37 #include <sys/param.h> 38 #include <netinet/in.h> 60 #if defined (SUPPRESS_STRLEN_WARNING) 61 #define strlen(s1) ((int) strlen(s1)) 64 #define IS_MASTER_SOCKET_FD(FD) \ 65 ((FD) == css_Master_socket_fd[0] || (FD) == css_Master_socket_fd[1]) 67 #define SERVER_FORMAT_STRING " Server %s (rel %s, pid %d)\n" 68 #define HA_SERVER_FORMAT_STRING " HA-Server %s (rel %s, pid %d)\n" 69 #define HA_COPYLOGDB_FORMAT_STRING " HA-copylogdb %s (rel %s, pid %d)\n" 70 #define HA_APPLYLOGDB_FORMAT_STRING " HA-applylogdb %s (rel %s, pid %d)\n" 123 request =
htonl (command);
127 send (sock_entry->
conn_ptr->
fd, (
char *) &request, sizeof (
int), 0);
185 struct timeval timeout;
187 char time_string[1028];
199 if (time ((time_t *) (&timeout.tv_sec)) == (time_t) (-1))
209 time_left = time_left / 60;
210 sprintf (time_string,
"%d", time_left);
244 count =
htonl (count);
271 count =
htonl (count);
287 int bufsize = 0, required_size;
315 bufsize += required_size;
319 buffer = (
char *) malloc (bufsize *
sizeof (
char));
328 char *oldbuffer = buffer;
329 buffer = (
char *) realloc (buffer, bufsize *
sizeof (
char));
387 int bufsize = 0, required_size;
397 switch (temp->
name[0])
419 bufsize += required_size;
423 buffer = (
char *) malloc (bufsize *
sizeof (
char));
432 char *oldbuffer = buffer;
433 buffer = (
char *) realloc (buffer, bufsize *
sizeof (
char));
441 switch (temp->
name[0])
502 char *time_buffer =
NULL;
509 timeout =
ntohl ((
int) *(
int *) time_buffer);
514 if ((temp->
name !=
NULL) && ((strcmp (temp->
name, server_name) == 0)
515 #
if !defined(WINDOWS)
517 && (strcmp (temp->
name + 1, server_name) == 0))
521 #if !defined(WINDOWS) 529 memset (buffer, 0,
sizeof (buffer));
532 server_name, timeout);
556 if (time_buffer !=
NULL)
582 snprintf (buffer, 512,
613 phandle = OpenProcess (PROCESS_TERMINATE,
FALSE, pid);
616 TerminateProcess (phandle, 0);
617 CloseHandle (phandle);
634 #if !defined(WINDOWS) 707 timeout =
ntohl ((
int) *(
int *) time_buffer);
709 memset (buffer, 0,
sizeof (buffer));
785 char ha_state_str[64];
793 if ((temp->
name !=
NULL) && (strcmp (temp->
name, server_name) == 0))
815 temp->
name, ha_state_str);
850 #if !defined(WINDOWS) 866 #if !defined(WINDOWS) 893 #if !defined(WINDOWS) 907 #if !defined(WINDOWS) 973 #if !defined(WINDOWS) 1039 #if !defined(WINDOWS) 1054 #if !defined(WINDOWS) 1055 char *buffer =
NULL;
1122 #if !defined(WINDOWS) 1123 char *buffer =
NULL;
1188 #if !defined(WINDOWS) 1189 char *buffer =
NULL;
1246 #if !defined(WINDOWS) 1287 #if !defined(WINDOWS) 1299 pid =
ntohl (*((
int *) pid_p));
1345 #if !defined(WINDOWS) 1402 #if !defined(WINDOWS) 1403 char *buffer =
NULL;
1457 #if !defined(WINDOWS) 1461 char error_string[LINE_MAX];
1474 snprintf (request_from,
sizeof (request_from),
"UNKNOWN");
1480 snprintf (error_string, LINE_MAX,
"%s.(failed to check eligibility of request)",
HB_RESULT_FAILURE_STR);
1486 snprintf (error_string, LINE_MAX,
"%s.(request from unauthorized host %s)",
HB_RESULT_FAILURE_STR, request_from);
1555 #if !defined(WINDOWS) 1589 #if !defined(WINDOWS) 1621 #if !defined(WINDOWS) 1623 char error_string[LINE_MAX];
1637 snprintf (request_from,
sizeof (request_from),
"UNKNOWN");
1643 snprintf (error_string, LINE_MAX,
"%s.(failed to check eligibility of request)",
HB_RESULT_FAILURE_STR);
1649 snprintf (error_string, LINE_MAX,
"%s.(request from unauthorized host %s)",
HB_RESULT_FAILURE_STR, request_from);
1662 if (deact_immediately !=
NULL && *((
bool *) deact_immediately) ==
true)
1712 #if !defined(WINDOWS) 1761 #if !defined(WINDOWS) 1822 #if !defined(WINDOWS) 1829 goto send_to_client;
1835 goto send_to_client;
1842 state =
htonl (state);
1860 unsigned short request_id;
1861 char *buffer =
NULL;
2013 #if !defined(WINDOWS) 2016 char *buffer =
NULL;
void hb_finish_deactivate_server_info(void)
static void css_process_change_ha_mode(CSS_CONN_ENTRY *conn)
#define HA_REQUEST_SUCCESS
static void css_send_command_to_server(const SOCKET_QUEUE_ENTRY *sock_entry, int command)
static void css_process_kill_all_ha_process(CSS_CONN_ENTRY *conn, unsigned short request_id)
int hb_start_util_process(char *args)
static void css_process_request_count_info(CSS_CONN_ENTRY *conn, unsigned short request_id)
static void css_process_all_list_info(CSS_CONN_ENTRY *conn, unsigned short request_id)
static void css_process_deact_confirm_stop_all(CSS_CONN_ENTRY *conn, unsigned short request_id)
#define IS_MASTER_CONN_NAME_HA_APPLYLOG(name)
int css_Total_request_count
static void css_process_deact_confirm_no_server(CSS_CONN_ENTRY *conn, unsigned short request_id)
void hb_deregister_by_args(char *args)
void hb_get_admin_info_string(char **str)
#define IS_MASTER_CONN_NAME_DRIVER(name)
unsigned int htonl(unsigned int from)
static void css_process_is_registered_ha_proc(CSS_CONN_ENTRY *conn, unsigned short request_id, char *buf)
#define HA_REQUEST_FAILURE
static void css_cleanup_info_connection(CSS_CONN_ENTRY *conn)
void master_util_wait_proc_terminate(int pid)
#define IS_MASTER_CONN_NAME_HA_SERVER(name)
void hb_reconfig_heartbeat(char **str)
#define HA_COPYLOGDB_FORMAT_STRING
CSS_CONN_ENTRY * conn_ptr
int hb_activate_heartbeat(void)
void hb_kill_all_heartbeat_process(char **str)
void css_remove_entry_by_conn(CSS_CONN_ENTRY *conn_p, SOCKET_QUEUE_ENTRY **anchor_p)
static void css_process_ha_ping_host_info(CSS_CONN_ENTRY *conn, unsigned short request_id)
void hb_register_new_process(CSS_CONN_ENTRY *conn)
int css_receive_heartbeat_request(CSS_CONN_ENTRY *conn, int *command)
#define MASTER_TO_SRV_MSG_SIZE
static void css_process_deactivate_heartbeat(CSS_CONN_ENTRY *conn, unsigned short request_id)
static void css_process_all_count_info(CSS_CONN_ENTRY *conn, unsigned short request_id)
void css_process_start_shutdown(SOCKET_QUEUE_ENTRY *sock_entq, int timeout, char *buffer)
static void css_process_kill_slave(CSS_CONN_ENTRY *conn, unsigned short request_id, char *server_name)
int css_receive_heartbeat_data(CSS_CONN_ENTRY *conn, char *data, int size)
int css_receive_request(CSS_CONN_ENTRY *conn, unsigned short *rid, int *request, int *buffer_size)
static void css_process_activate_heartbeat(CSS_CONN_ENTRY *conn, unsigned short request_id)
#define HB_RESULT_FAILURE_STR
int hb_return_proc_state_by_fd(int sfd)
static void css_process_ha_admin_info(CSS_CONN_ENTRY *conn, unsigned short request_id)
#define HA_REQUEST_RESULT_SIZE
#define ERR_CSS_MINFO_MESSAGE
void er_final(ER_FINAL_CODE do_global_final)
#define HA_SERVER_FORMAT_STRING
void css_process_heartbeat_request(CSS_CONN_ENTRY *conn)
void hb_resource_receive_changemode(CSS_CONN_ENTRY *conn)
void hb_start_deactivate_server_info(void)
static void css_process_ha_deregister_by_args(CSS_CONN_ENTRY *conn, unsigned short request_id, char *args)
const char * css_ha_server_state_string(HA_SERVER_STATE state)
static void css_process_register_ha_process(CSS_CONN_ENTRY *conn)
void hb_resource_receive_get_eof(CSS_CONN_ENTRY *conn)
bool hb_is_registered_process(CSS_CONN_ENTRY *conn, char *args)
static void css_process_server_list_info(CSS_CONN_ENTRY *conn, unsigned short request_id)
#define IS_INVALID_SOCKET(socket)
void hb_resource_shutdown_and_cleanup(void)
static void css_send_message_to_server(const SOCKET_QUEUE_ENTRY *sock_entry, const char *message)
static void css_process_deregister_ha_process(CSS_CONN_ENTRY *conn)
void css_shutdown_socket(SOCKET fd)
void hb_get_process_info_string(char **str, bool verbose_yn)
#define HB_CMD_DEACTIVATE_STR
bool hb_is_deactivation_ready(void)
#define ER_HB_COMMAND_EXECUTION
void css_process_stop_shutdown(void)
static void css_process_ha_process_list_info(CSS_CONN_ENTRY *conn, unsigned short request_id, bool verbose_yn)
static void css_process_ha_deregister_by_pid(CSS_CONN_ENTRY *conn, unsigned short request_id, char *pid_p)
#define HA_APPLYLOGDB_FORMAT_STRING
static void css_process_kill_immediate(CSS_CONN_ENTRY *conn, unsigned short request_id, char *server_name)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
SOCKET css_Master_socket_fd[2]
static void css_process_server_state(CSS_CONN_ENTRY *conn, unsigned short request_id, char *server_name)
#define MASTER_ER_LOG_DEBUG(...)
static void css_process_ha_node_list_info(CSS_CONN_ENTRY *conn, unsigned short request_id, bool verbose_yn)
void hb_disable_er_log(int reason, const char *msg_fmt,...)
HB_RESOURCE * hb_Resource
static void error(const char *msg)
#define SERVER_FORMAT_STRING
#define MASTER_ER_SET(...)
int css_readn(SOCKET fd, char *ptr, int nbytes, int timeout)
int css_receive_data(CSS_CONN_ENTRY *conn, unsigned short req_id, char **buffer, int *buffer_size, int timeout)
static void css_process_ha_start_util_process(CSS_CONN_ENTRY *conn, unsigned short request_id, char *args)
static void css_process_reconfig_heartbeat(CSS_CONN_ENTRY *conn, unsigned short request_id)
char * css_get_master_domain_path(void)
bool hb_Deactivate_immediately
static void css_process_deact_stop_all(CSS_CONN_ENTRY *conn, unsigned short request_id, char *deact_immediately)
#define free_and_init(ptr)
static void css_process_start_time_info(CSS_CONN_ENTRY *conn, unsigned short request_id)
struct timeval * css_Master_timeout
static void css_process_get_server_ha_mode(CSS_CONN_ENTRY *conn, unsigned short request_id, char *server_name)
void hb_cluster_shutdown_and_cleanup(void)
static void css_process_server_count_info(CSS_CONN_ENTRY *conn, unsigned short request_id)
int hb_get_deactivating_server_count(void)
static void css_process_shutdown(char *time_buffer)
static void css_process_shutdown_time_info(CSS_CONN_ENTRY *conn, unsigned short request_id)
int hb_deactivate_heartbeat(void)
char * msgcat_message(int cat_id, int set_id, int msg_id)
int hb_check_request_eligibility(SOCKET sd)
void hb_deregister_by_pid(pid_t pid)
int css_get_peer_name(SOCKET sockfd, char *hostname, size_t len)
void hb_get_ping_host_info_string(char **str)
struct socket_queue_entry * next
void css_process_info_request(CSS_CONN_ENTRY *conn)
int hb_prepare_deactivate_heartbeat(void)
unsigned int ntohl(unsigned int from)
int css_send_data(CSS_CONN_ENTRY *conn, unsigned short rid, const char *buffer, int buffer_size)
static void css_send_term_signal(int pid)
enum ha_server_state HA_SERVER_STATE
SOCKET_QUEUE_ENTRY * css_return_entry_of_server(char *name_p, SOCKET_QUEUE_ENTRY *anchor_p)
#define CUB_MAXHOSTNAMELEN
const char * rel_release_string(void)
bool hb_is_deactivation_started(void)
#define IS_MASTER_CONN_NAME_HA_COPYLOG(name)
static void css_process_kill_master(void)
#define IS_MASTER_SOCKET_FD(FD)
SOCKET_QUEUE_ENTRY * css_Master_socket_anchor
void hb_get_node_info_string(char **str, bool verbose_yn)
void hb_cleanup_conn_and_start_process(CSS_CONN_ENTRY *conn, SOCKET sfd)
static void css_process_get_eof(CSS_CONN_ENTRY *conn)
#define MSGCAT_CATALOG_UTILS