Skip to content

File master_heartbeat.h

FileList > cubrid > src > executables > master_heartbeat.h

Go to the source code of this file

  • #include "heartbeat.h"
  • #include "log_lsa.hpp"
  • #include "master_util.h"
  • #include "porting.h"
  • #include "system_parameter.h"

Classes

Type Name
struct HB_PROC_ENTRY
struct hb_cluster
struct hb_cluster_job_arg
struct hb_job
struct hb_job_entry
struct hb_list
struct hb_node_entry
struct hb_ping_host_entry
struct hb_resource
struct hb_resource_job_arg
struct hb_ui_node_entry

Public Types

Type Name
typedef struct hb_cluster HB_CLUSTER
enum HB_CLUSTER_JOB
typedef struct hb_cluster_job_arg HB_CLUSTER_JOB_ARG
enum HB_HOST_CHECK_RESULT
typedef struct hb_job HB_JOB
typedef union hb_job_arg HB_JOB_ARG
typedef struct hb_job_entry HB_JOB_ENTRY
typedef void(* HB_JOB_FUNC
typedef struct hb_list HB_LIST
typedef struct hb_node_entry HB_NODE_ENTRY
enum HB_NOLOG_REASON
typedef struct hb_ping_host_entry HB_PING_HOST_ENTRY
enum HB_PING_RESULT
enum HB_PROC_STATE
typedef struct hb_resource HB_RESOURCE
enum HB_RESOURCE_JOB
typedef struct hb_resource_job_arg HB_RESOURCE_JOB_ARG
typedef struct hb_ui_node_entry HB_UI_NODE_ENTRY
enum HB_VALID_RESULT
union hb_job_arg

Public Attributes

Type Name
HB_JOB * cluster_Jobs
HB_CLUSTER * hb_Cluster
bool hb_Deactivate_immediately
HB_RESOURCE * hb_Resource
HB_JOB * resource_Jobs

Public Functions

Type Name
int hb_activate_heartbeat (void)
int hb_check_request_eligibility (SOCKET sd)
void hb_cleanup_conn_and_start_process (CSS_CONN_ENTRY * conn, SOCKET sfd)
void hb_cluster_shutdown_and_cleanup (void)
int hb_deactivate_heartbeat (void)
void hb_deregister_by_args (char * args)
void hb_deregister_by_pid (pid_t pid)
void hb_disable_er_log (int reason, const char * msg_fmt, ...)
void hb_enable_er_log (void)
void hb_finish_deactivate_server_info (void)
void hb_get_admin_info_string (char ** str)
int hb_get_deactivating_server_count (void)
void hb_get_node_info_string (char ** str, bool verbose_yn)
void hb_get_ping_host_info_string (char ** str)
void hb_get_process_info_string (char ** str, bool verbose_yn)
void hb_get_tcp_ping_host_info_string (char ** str)
bool hb_is_deactivation_ready (void)
bool hb_is_deactivation_started (void)
bool hb_is_hang_process (int sfd)
bool hb_is_registered_process (CSS_CONN_ENTRY * conn, char * args)
void hb_kill_all_heartbeat_process (char ** str)
int hb_master_init (void)
int hb_prepare_deactivate_heartbeat (void)
void hb_reconfig_heartbeat (char ** str)
void hb_register_new_process (CSS_CONN_ENTRY * conn)
void hb_resource_receive_changemode (CSS_CONN_ENTRY * conn)
void hb_resource_receive_get_eof (CSS_CONN_ENTRY * conn)
void hb_resource_shutdown_and_cleanup (void)
int hb_return_proc_state_by_fd (int sfd)
void hb_start_deactivate_server_info (void)
int hb_start_util_process (char * args)

Macros

Type Name
define HB_BUFFER_SZ (4096)
define HB_CMD_ACTIVATE_STR "activate"
define HB_CMD_DEACTIVATE_STR "deactivate"
define HB_CMD_DEREGISTER_STR "deregister"
define HB_CMD_RELOAD_STR "reload"
define HB_CMD_UTIL_START_STR "util [**process**](broker__monitor_8c.md#function-timeout) [**start"**](broker__monitor_8c.md#function-timeout)
define HB_GET_ELAPSED_TIME (end_time, start_time) /* multi line expression */
define HB_IPV4_STR_LEN (16)
define HB_IS_INITIALIZED_TIME (arg_time) (([**arg\_time.tv\_sec**](broker__monitor_8c.md#function-timeout) == 0 && [**arg\_time.tv\_usec**](broker__monitor_8c.md#function-timeout) == 0) ? 1 : 0)
define HB_MAX_CHANGEMODE_DIFF_TO_KILL (24)
define HB_MAX_CHANGEMODE_DIFF_TO_TERM (12)
define HB_MAX_NUM_NODES (8)
define HB_MAX_NUM_RESOURCE_PROC (16)
define HB_MAX_PING_CHECK (3)
define HB_MAX_WAIT_FOR_NEW_MASTER (60)
define HB_NODE_SCORE_MASTER 0x8000
define HB_NODE_SCORE_SLAVE 0x0000
define HB_NODE_SCORE_TO_BE_MASTER 0xF000
define HB_NODE_SCORE_UNKNOWN 0x7FFF
define HB_PING_FAILURE_STR "FAILURE"
define HB_PING_STR_SIZE (7)
define HB_PING_SUCCESS_STR "SUCCESS"
define HB_PING_SYS_ERR_STR "ERROR"
define HB_PING_UNKNOWN_STR "UNKNOWN"
define HB_PING_USELESS_HOST_STR "SKIPPED"
define HB_PROC_RECOVERY_DELAY_TIME (30\* 1000) /\* [**milli**](broker__monitor_8c.md#function-timeout)-second \*/
define HB_PSTATE_DEAD_STR "dead"
define HB_PSTATE_DEREGISTERED_STR "deregistered"
define HB_PSTATE_NOT_REGISTERED_STR "not\_registered"
define HB_PSTATE_REGISTERED_AND_ACTIVE_STR "registered\_and\_active"
define HB_PSTATE_REGISTERED_AND_STANDBY_STR "registered\_and\_standby"
define HB_PSTATE_REGISTERED_AND_TO_BE_ACTIVE_STR "registered\_and\_to\_be\_active"
define HB_PSTATE_REGISTERED_AND_TO_BE_STANDBY_STR "registered\_and\_to\_be\_standby"
define HB_PSTATE_REGISTERED_STR "registered"
define HB_PSTATE_STARTED_STR "started"
define HB_PSTATE_STR_SZ (32)
define HB_PSTATE_UNKNOWN_STR "unknown"
define HB_REPLICA_PRIORITY 0x7FFF
define HB_RESULT_FAILURE_STR "Failure"
define HB_RESULT_SUCCESS_STR "Success"
define HB_UI_NODE_CACHE_TIME_IN_MSECS (60 \* 1000)
define HB_UI_NODE_CLEANUP_TIME_IN_MSECS (3600 \* 1000)
define HB_VALID_CANNOT_RESOLVE_HOST_STR "cannot\_resolve\_host\_name"
define HB_VALID_GROUP_NAME_MISMATCH_STR "group\_name\_mismatch"
define HB_VALID_IP_ADDR_MISMATCH_STR "ip\_addr\_mismatch"
define HB_VALID_NO_ERROR_STR "no\_error"
define HB_VALID_UNIDENTIFIED_NODE_STR "unidentified\_node"

Public Types Documentation

typedef HB_CLUSTER

typedef struct hb_cluster HB_CLUSTER;

enum HB_CLUSTER_JOB

enum HB_CLUSTER_JOB {
    HB_CJOB_INIT = 0,
    HB_CJOB_HEARTBEAT = 1,
    HB_CJOB_CALC_SCORE = 2,
    HB_CJOB_CHECK_PING = 3,
    HB_CJOB_FAILOVER = 4,
    HB_CJOB_FAILBACK = 5,
    HB_CJOB_CHECK_VALID_PING_SERVER = 6,
    HB_CJOB_DEMOTE = 7,
    HB_CJOB_MAX
};

typedef HB_CLUSTER_JOB_ARG

typedef struct hb_cluster_job_arg HB_CLUSTER_JOB_ARG;

enum HB_HOST_CHECK_RESULT

enum HB_HOST_CHECK_RESULT {
    HB_HC_ELIGIBLE_LOCAL,
    HB_HC_ELIGIBLE_REMOTE,
    HB_HC_UNAUTHORIZED,
    HB_HC_FAILED
};

typedef HB_JOB

typedef struct hb_job HB_JOB;

typedef HB_JOB_ARG

typedef union hb_job_arg HB_JOB_ARG;

typedef HB_JOB_ENTRY

typedef struct hb_job_entry HB_JOB_ENTRY;

typedef HB_JOB_FUNC

typedef void(* HB_JOB_FUNC) (HB_JOB_ARG *);

typedef HB_LIST

typedef struct hb_list HB_LIST;

typedef HB_NODE_ENTRY

typedef struct hb_node_entry HB_NODE_ENTRY;

enum HB_NOLOG_REASON

enum HB_NOLOG_REASON {
    HB_NOLOG_DEMOTE_ON_DISK_FAIL,
    HB_NOLOG_REMOTE_STOP,
    HB_NOLOG_MAX = HB_NOLOG_REMOTE_STOP
};

typedef HB_PING_HOST_ENTRY

typedef struct hb_ping_host_entry HB_PING_HOST_ENTRY;

enum HB_PING_RESULT

enum HB_PING_RESULT {
    HB_PING_UNKNOWN = -1,
    HB_PING_SUCCESS = 0,
    HB_PING_USELESS_HOST = 1,
    HB_PING_SYS_ERR = 2,
    HB_PING_FAILURE = 3
};

enum HB_PROC_STATE

enum HB_PROC_STATE {
    HB_PSTATE_UNKNOWN = 0,
    HB_PSTATE_DEAD = 1,
    HB_PSTATE_DEREGISTERED = 2,
    HB_PSTATE_STARTED = 3,
    HB_PSTATE_NOT_REGISTERED = 4,
    HB_PSTATE_REGISTERED = 5,
    HB_PSTATE_REGISTERED_AND_STANDBY = HB_PSTATE_REGISTERED,
    HB_PSTATE_REGISTERED_AND_TO_BE_STANDBY = 6,
    HB_PSTATE_REGISTERED_AND_ACTIVE = 7,
    HB_PSTATE_REGISTERED_AND_TO_BE_ACTIVE = 8,
    HB_PSTATE_MAX
};

typedef HB_RESOURCE

typedef struct hb_resource HB_RESOURCE;

enum HB_RESOURCE_JOB

enum HB_RESOURCE_JOB {
    HB_RJOB_PROC_START = 0,
    HB_RJOB_PROC_DEREG = 1,
    HB_RJOB_CONFIRM_START = 2,
    HB_RJOB_CONFIRM_DEREG = 3,
    HB_RJOB_CHANGE_MODE = 4,
    HB_RJOB_DEMOTE_START_SHUTDOWN = 5,
    HB_RJOB_DEMOTE_CONFIRM_SHUTDOWN = 6,
    HB_RJOB_CLEANUP_ALL = 7,
    HB_RJOB_CONFIRM_CLEANUP_ALL = 8,
    HB_RJOB_MAX
};

typedef HB_RESOURCE_JOB_ARG

typedef struct hb_resource_job_arg HB_RESOURCE_JOB_ARG;

typedef HB_UI_NODE_ENTRY

typedef struct hb_ui_node_entry HB_UI_NODE_ENTRY;

enum HB_VALID_RESULT

enum HB_VALID_RESULT {
    HB_VALID_NO_ERROR = 0,
    HB_VALID_UNIDENTIFIED_NODE = 1,
    HB_VALID_GROUP_NAME_MISMATCH = 2,
    HB_VALID_IP_ADDR_MISMATCH = 3,
    HB_VALID_CANNOT_RESOLVE_HOST = 4
};

union hb_job_arg



Public Attributes Documentation

variable cluster_Jobs

HB_JOB* cluster_Jobs;

variable hb_Cluster

HB_CLUSTER* hb_Cluster;

variable hb_Deactivate_immediately

bool hb_Deactivate_immediately;

variable hb_Resource

HB_RESOURCE* hb_Resource;

variable resource_Jobs

HB_JOB* resource_Jobs;

Public Functions Documentation

function hb_activate_heartbeat

int hb_activate_heartbeat (
    void
) 

function hb_check_request_eligibility

int hb_check_request_eligibility (
    SOCKET sd
) 

function hb_cleanup_conn_and_start_process

void hb_cleanup_conn_and_start_process (
    CSS_CONN_ENTRY * conn,
    SOCKET sfd
) 

function hb_cluster_shutdown_and_cleanup

void hb_cluster_shutdown_and_cleanup (
    void
) 

function hb_deactivate_heartbeat

int hb_deactivate_heartbeat (
    void
) 

function hb_deregister_by_args

void hb_deregister_by_args (
    char * args
) 

function hb_deregister_by_pid

void hb_deregister_by_pid (
    pid_t pid
) 

function hb_disable_er_log

void hb_disable_er_log (
    int reason,
    const  char * msg_fmt,
    ...
) 

function hb_enable_er_log

void hb_enable_er_log (
    void
) 

function hb_finish_deactivate_server_info

void hb_finish_deactivate_server_info (
    void
) 

function hb_get_admin_info_string

void hb_get_admin_info_string (
    char ** str
) 

function hb_get_deactivating_server_count

int hb_get_deactivating_server_count (
    void
) 

function hb_get_node_info_string

void hb_get_node_info_string (
    char ** str,
    bool verbose_yn
) 

function hb_get_ping_host_info_string

void hb_get_ping_host_info_string (
    char ** str
) 

function hb_get_process_info_string

void hb_get_process_info_string (
    char ** str,
    bool verbose_yn
) 

function hb_get_tcp_ping_host_info_string

void hb_get_tcp_ping_host_info_string (
    char ** str
) 

function hb_is_deactivation_ready

bool hb_is_deactivation_ready (
    void
) 

function hb_is_deactivation_started

bool hb_is_deactivation_started (
    void
) 

function hb_is_hang_process

bool hb_is_hang_process (
    int sfd
) 

function hb_is_registered_process

bool hb_is_registered_process (
    CSS_CONN_ENTRY * conn,
    char * args
) 

function hb_kill_all_heartbeat_process

void hb_kill_all_heartbeat_process (
    char ** str
) 

function hb_master_init

int hb_master_init (
    void
) 

function hb_prepare_deactivate_heartbeat

int hb_prepare_deactivate_heartbeat (
    void
) 

function hb_reconfig_heartbeat

void hb_reconfig_heartbeat (
    char ** str
) 

function hb_register_new_process

void hb_register_new_process (
    CSS_CONN_ENTRY * conn
) 

function hb_resource_receive_changemode

void hb_resource_receive_changemode (
    CSS_CONN_ENTRY * conn
) 

function hb_resource_receive_get_eof

void hb_resource_receive_get_eof (
    CSS_CONN_ENTRY * conn
) 

function hb_resource_shutdown_and_cleanup

void hb_resource_shutdown_and_cleanup (
    void
) 

function hb_return_proc_state_by_fd

int hb_return_proc_state_by_fd (
    int sfd
) 

function hb_start_deactivate_server_info

void hb_start_deactivate_server_info (
    void
) 

function hb_start_util_process

int hb_start_util_process (
    char * args
) 

Macro Definition Documentation

define HB_BUFFER_SZ

#define HB_BUFFER_SZ `(4096)`

define HB_CMD_ACTIVATE_STR

#define HB_CMD_ACTIVATE_STR `"activate"`

define HB_CMD_DEACTIVATE_STR

#define HB_CMD_DEACTIVATE_STR `"deactivate"`

define HB_CMD_DEREGISTER_STR

#define HB_CMD_DEREGISTER_STR `"deregister"`

define HB_CMD_RELOAD_STR

#define HB_CMD_RELOAD_STR `"reload"`

define HB_CMD_UTIL_START_STR

#define HB_CMD_UTIL_START_STR `"util process  start"`

define HB_GET_ELAPSED_TIME

#define HB_GET_ELAPSED_TIME (
    end_time,
    start_time
) `/* multi line expression */`

define HB_IPV4_STR_LEN

#define HB_IPV4_STR_LEN `(16)`

define HB_IS_INITIALIZED_TIME

#define HB_IS_INITIALIZED_TIME (
    arg_time
) `(( arg_time.tv_sec == 0 && arg_time.tv_usec == 0) ? 1 : 0)`

define HB_MAX_CHANGEMODE_DIFF_TO_KILL

#define HB_MAX_CHANGEMODE_DIFF_TO_KILL `(24)`

define HB_MAX_CHANGEMODE_DIFF_TO_TERM

#define HB_MAX_CHANGEMODE_DIFF_TO_TERM `(12)`

define HB_MAX_NUM_NODES

#define HB_MAX_NUM_NODES `(8)`

define HB_MAX_NUM_RESOURCE_PROC

#define HB_MAX_NUM_RESOURCE_PROC `(16)`

define HB_MAX_PING_CHECK

#define HB_MAX_PING_CHECK `(3)`

define HB_MAX_WAIT_FOR_NEW_MASTER

#define HB_MAX_WAIT_FOR_NEW_MASTER `(60)`

define HB_NODE_SCORE_MASTER

#define HB_NODE_SCORE_MASTER `0x8000`

define HB_NODE_SCORE_SLAVE

#define HB_NODE_SCORE_SLAVE `0x0000`

define HB_NODE_SCORE_TO_BE_MASTER

#define HB_NODE_SCORE_TO_BE_MASTER `0xF000`

define HB_NODE_SCORE_UNKNOWN

#define HB_NODE_SCORE_UNKNOWN `0x7FFF`

define HB_PING_FAILURE_STR

#define HB_PING_FAILURE_STR `"FAILURE"`

define HB_PING_STR_SIZE

#define HB_PING_STR_SIZE `(7)`

define HB_PING_SUCCESS_STR

#define HB_PING_SUCCESS_STR `"SUCCESS"`

define HB_PING_SYS_ERR_STR

#define HB_PING_SYS_ERR_STR `"ERROR"`

define HB_PING_UNKNOWN_STR

#define HB_PING_UNKNOWN_STR `"UNKNOWN"`

define HB_PING_USELESS_HOST_STR

#define HB_PING_USELESS_HOST_STR `"SKIPPED"`

define HB_PROC_RECOVERY_DELAY_TIME

#define HB_PROC_RECOVERY_DELAY_TIME `(30* 1000) /* milli -second */`

define HB_PSTATE_DEAD_STR

#define HB_PSTATE_DEAD_STR `"dead"`

define HB_PSTATE_DEREGISTERED_STR

#define HB_PSTATE_DEREGISTERED_STR `"deregistered"`

define HB_PSTATE_NOT_REGISTERED_STR

#define HB_PSTATE_NOT_REGISTERED_STR `"not_registered"`

define HB_PSTATE_REGISTERED_AND_ACTIVE_STR

#define HB_PSTATE_REGISTERED_AND_ACTIVE_STR `"registered_and_active"`

define HB_PSTATE_REGISTERED_AND_STANDBY_STR

#define HB_PSTATE_REGISTERED_AND_STANDBY_STR `"registered_and_standby"`

define HB_PSTATE_REGISTERED_AND_TO_BE_ACTIVE_STR

#define HB_PSTATE_REGISTERED_AND_TO_BE_ACTIVE_STR `"registered_and_to_be_active"`

define HB_PSTATE_REGISTERED_AND_TO_BE_STANDBY_STR

#define HB_PSTATE_REGISTERED_AND_TO_BE_STANDBY_STR `"registered_and_to_be_standby"`

define HB_PSTATE_REGISTERED_STR

#define HB_PSTATE_REGISTERED_STR `"registered"`

define HB_PSTATE_STARTED_STR

#define HB_PSTATE_STARTED_STR `"started"`

define HB_PSTATE_STR_SZ

#define HB_PSTATE_STR_SZ `(32)`

define HB_PSTATE_UNKNOWN_STR

#define HB_PSTATE_UNKNOWN_STR `"unknown"`

define HB_REPLICA_PRIORITY

#define HB_REPLICA_PRIORITY `0x7FFF`

define HB_RESULT_FAILURE_STR

#define HB_RESULT_FAILURE_STR `"Failure"`

define HB_RESULT_SUCCESS_STR

#define HB_RESULT_SUCCESS_STR `"Success"`

define HB_UI_NODE_CACHE_TIME_IN_MSECS

#define HB_UI_NODE_CACHE_TIME_IN_MSECS `(60 * 1000)`

define HB_UI_NODE_CLEANUP_TIME_IN_MSECS

#define HB_UI_NODE_CLEANUP_TIME_IN_MSECS `(3600 * 1000)`

define HB_VALID_CANNOT_RESOLVE_HOST_STR

#define HB_VALID_CANNOT_RESOLVE_HOST_STR `"cannot_resolve_host_name"`

define HB_VALID_GROUP_NAME_MISMATCH_STR

#define HB_VALID_GROUP_NAME_MISMATCH_STR `"group_name_mismatch"`

define HB_VALID_IP_ADDR_MISMATCH_STR

#define HB_VALID_IP_ADDR_MISMATCH_STR `"ip_addr_mismatch"`

define HB_VALID_NO_ERROR_STR

#define HB_VALID_NO_ERROR_STR `"no_error"`

define HB_VALID_UNIDENTIFIED_NODE_STR

#define HB_VALID_UNIDENTIFIED_NODE_STR `"unidentified_node"`


The documentation for this class was generated from the following file cubrid/src/executables/master_heartbeat.h