CUBRID Engine
latest
|
#include "config.h"
#include <filesystem>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <assert.h>
#include <math.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <sys/uio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include "porting.h"
#include "error_manager.h"
#include "connection_globals.h"
#include "filesys.hpp"
#include "filesys_temp.hpp"
#include "memory_alloc.h"
#include "system_parameter.h"
#include "environment_variable.h"
#include "tcp.h"
#include "connection_list_cl.h"
#include "connection_cl.h"
#include "master_util.h"
Go to the source code of this file.
Macros | |
#define | TRACE(string, arg1) |
Functions | |
static void | css_initialize_conn (CSS_CONN_ENTRY *conn, SOCKET fd) |
static void | css_close_conn (CSS_CONN_ENTRY *conn) |
static void | css_dealloc_conn (CSS_CONN_ENTRY *conn) |
static int | css_read_header (CSS_CONN_ENTRY *conn, NET_HEADER *local_header) |
static CSS_CONN_ENTRY * | css_common_connect (const char *host_name, CSS_CONN_ENTRY *conn, int connect_type, const char *server_name, int server_name_length, int port, int timeout, unsigned short *rid, bool send_magic) |
static CSS_CONN_ENTRY * | css_server_connect (char *host_name, CSS_CONN_ENTRY *conn, char *server_name, unsigned short *rid) |
static CSS_CONN_ENTRY * | css_server_connect_part_two (char *host_name, CSS_CONN_ENTRY *conn, int port_id, unsigned short *rid) |
static int | css_return_queued_data (CSS_CONN_ENTRY *conn, unsigned short request_id, char **buffer, int *buffer_size, int *rc) |
static int | css_return_queued_request (CSS_CONN_ENTRY *conn, unsigned short *rid, int *request, int *buffer_size) |
void | css_shutdown_conn (CSS_CONN_ENTRY *conn) |
CSS_CONN_ENTRY * | css_make_conn (SOCKET fd) |
void | css_free_conn (CSS_CONN_ENTRY *conn) |
CSS_CONN_ENTRY * | css_find_exception_conn (void) |
CSS_CONN_ENTRY * | css_find_conn_from_fd (SOCKET fd) |
unsigned short | css_get_request_id (CSS_CONN_ENTRY *conn) |
int | css_test_for_open_conn (CSS_CONN_ENTRY *conn) |
int | css_send_close_request (CSS_CONN_ENTRY *conn) |
int | css_read_one_request (CSS_CONN_ENTRY *conn, unsigned short *rid, int *request, int *buffer_size) |
int | css_receive_request (CSS_CONN_ENTRY *conn, unsigned short *rid, int *request, int *buffer_size) |
int | css_receive_data (CSS_CONN_ENTRY *conn, unsigned short req_id, char **buffer, int *buffer_size, int timeout) |
int | css_receive_error (CSS_CONN_ENTRY *conn, unsigned short req_id, char **buffer, int *buffer_size) |
CSS_CONN_ENTRY * | css_connect_to_master_server (int master_port_id, const char *server_name, int name_length) |
CSS_CONN_ENTRY * | css_connect_to_cubrid_server (char *host_name, char *server_name) |
CSS_CONN_ENTRY * | css_connect_to_master_for_info (const char *host_name, int port_id, unsigned short *rid) |
CSS_CONN_ENTRY * | css_connect_to_master_timeout (const char *host_name, int port_id, int timeout, unsigned short *rid) |
bool | css_does_master_exist (int port_id) |
bool | css_is_valid_request_id (CSS_CONN_ENTRY *conn, unsigned short request_id) |
char * | css_return_data_buffer (CSS_CONN_ENTRY *conn, unsigned short request_id, int *buffer_size) |
int | css_return_queued_error (CSS_CONN_ENTRY *conn, unsigned short request_id, char **buffer, int *buffer_size, int *rc) |
void | css_remove_all_unexpected_packets (CSS_CONN_ENTRY *conn) |
Variables | |
static CSS_CONN_ENTRY * | css_Conn_anchor = NULL |
static int | css_Client_id = 0 |
#define TRACE | ( | string, | |
arg1 | |||
) |
Definition at line 94 of file connection_cl.c.
Referenced by css_connect_to_master_server(), css_receive_data(), and css_receive_request().
|
static |
Definition at line 187 of file connection_cl.c.
References css_initialize_conn(), css_shutdown_conn(), css_conn_entry::fd, and IS_INVALID_SOCKET.
Referenced by css_connect_to_cubrid_server(), and css_free_conn().
|
static |
Definition at line 720 of file connection_cl.c.
References ARG_FILE_LINE, css_send_magic(), css_send_request(), css_tcp_client_open_with_retry(), css_tcp_client_open_with_timeout(), ER_ERROR_SEVERITY, er_set_with_oserror(), ERR_CSS_TCP_CANNOT_CONNECT_TO_MASTER, ERR_CSS_TCP_CONNECT_TIMEDOUT, css_conn_entry::fd, IS_INVALID_SOCKET, NO_ERRORS, and NULL.
Referenced by css_connect_to_master_server(), css_connect_to_master_timeout(), css_server_connect(), and css_server_connect_part_two().
CSS_CONN_ENTRY* css_connect_to_cubrid_server | ( | char * | host_name, |
char * | server_name | ||
) |
Definition at line 1006 of file connection_cl.c.
References css_queue_entry::buffer, css_conn_entry::buffer_queue, css_close_conn(), css_find_queue_entry(), css_free_conn(), css_make_conn(), css_queue_remove_header_entry_ptr(), css_queue_user_data_buffer(), css_receive_data(), css_receive_error(), css_server_connect(), css_server_connect_part_two(), er_set_area_error(), free_and_init, NO_ERRORS, ntohl(), NULL, prm_get_integer_value(), PRM_ID_TCP_CONNECTION_TIMEOUT, SERVER_CLIENTS_EXCEEDED, SERVER_CONNECTED, SERVER_CONNECTED_NEW, SERVER_HANG, SERVER_INACCESSIBLE_IP, SERVER_IS_RECOVERING, SERVER_NOT_FOUND, and SERVER_STARTED.
Referenced by css_client_init().
CSS_CONN_ENTRY* css_connect_to_master_for_info | ( | const char * | host_name, |
int | port_id, | ||
unsigned short * | rid | ||
) |
Definition at line 1158 of file connection_cl.c.
References css_connect_to_master_timeout().
Referenced by main().
CSS_CONN_ENTRY* css_connect_to_master_server | ( | int | master_port_id, |
const char * | server_name, | ||
int | name_length | ||
) |
Definition at line 861 of file connection_cl.c.
Referenced by css_init(), and css_reestablish_connection_to_master().
CSS_CONN_ENTRY* css_connect_to_master_timeout | ( | const char * | host_name, |
int | port_id, | ||
int | timeout, | ||
unsigned short * | rid | ||
) |
Definition at line 1175 of file connection_cl.c.
References css_common_connect(), css_make_conn(), INFO_REQUEST, and NULL.
Referenced by connect_to_master_for_server_monitor(), and css_connect_to_master_for_info().
|
static |
Definition at line 202 of file connection_cl.c.
References free_and_init, css_conn_entry::next, and p.
Referenced by css_free_conn().
bool css_does_master_exist | ( | int | port_id | ) |
Definition at line 1197 of file connection_cl.c.
References css_shutdown_socket(), css_tcp_client_open_with_retry(), and IS_INVALID_SOCKET.
Referenced by check_all_services_status(), is_server_running(), main(), process_heartbeat_deregister(), process_heartbeat_reload(), process_heartbeat_replication(), process_heartbeat_start(), process_heartbeat_status(), process_heartbeat_stop(), process_master(), process_server(), and process_service().
CSS_CONN_ENTRY* css_find_conn_from_fd | ( | SOCKET | fd | ) |
Definition at line 256 of file connection_cl.c.
Referenced by css_default_server_timeout_fn(), and css_sprintf_conn_infoids().
CSS_CONN_ENTRY* css_find_exception_conn | ( | void | ) |
Definition at line 245 of file connection_cl.c.
References NULL.
Referenced by css_handle_pipe_shutdown().
void css_free_conn | ( | CSS_CONN_ENTRY * | conn | ) |
Definition at line 234 of file connection_cl.c.
Referenced by css_accept_old_request(), css_connect_to_cubrid_server(), css_connect_to_master_server(), css_free_entry(), css_is_shutdown_timeout_expired(), css_process_new_connection(), css_reestablish_connection_to_master(), css_register_new_server(), css_register_new_server2(), css_send_to_existing_server(), net_server_conn_down(), and server_monitor_thr_f().
unsigned short css_get_request_id | ( | CSS_CONN_ENTRY * | conn | ) |
Definition at line 277 of file connection_cl.c.
Referenced by css_send_request_with_data_buffer().
|
static |
Definition at line 144 of file connection_cl.c.
References css_conn_entry::abort_queue, css_conn_entry::buffer_queue, css_conn_entry::client_id, css_conn_entry::cnxn, CONN_OPEN, css_Client_id, css_conn_entry::data_queue, css_conn_entry::db_error, css_conn_entry::error_queue, css_conn_entry::fd, css_conn_entry::invalidate_snapshot, NULL, NULL_TRAN_INDEX, css_conn_entry::request_id, css_conn_entry::request_queue, and css_conn_entry::status.
Referenced by css_close_conn(), css_make_conn(), and css_refuse_connection_request().
static bool css_is_valid_request_id | ( | CSS_CONN_ENTRY * | conn, |
unsigned short | request_id | ||
) |
Definition at line 1222 of file connection_cl.c.
References css_conn_entry::abort_queue, css_find_queue_entry(), css_conn_entry::data_queue, css_conn_entry::error_queue, NULL, and css_conn_entry::request_queue.
Referenced by css_get_request_id().
CSS_CONN_ENTRY* css_make_conn | ( | SOCKET | fd | ) |
Definition at line 167 of file connection_cl.c.
Referenced by css_accept_new_request(), css_accept_old_request(), css_connect_to_cubrid_server(), css_connect_to_master_server(), css_connect_to_master_timeout(), css_is_shutdown_timeout_expired(), css_process_new_client(), css_process_new_connection(), and main().
|
static |
Definition at line 364 of file connection_cl.c.
References CLOSE_TYPE, CONNECTION_CLOSED, css_net_read_header(), css_shutdown_conn(), packet_header::db_error, css_conn_entry::db_error, css_conn_entry::fd, packet_header::flags, css_conn_entry::invalidate_snapshot, NET_HEADER_FLAG_INVALIDATE_SNAPSHOT, NO_ERRORS, ntohl(), ntohs(), rc, RECORD_TRUNCATED, packet_header::transaction_id, and packet_header::type.
Referenced by css_is_shutdown_timeout_expired(), css_read_one_request(), and css_refuse_connection_request().
int css_read_one_request | ( | CSS_CONN_ENTRY * | conn, |
unsigned short * | rid, | ||
int * | request, | ||
int * | buffer_size | ||
) |
Definition at line 404 of file connection_cl.c.
References packet_header::buffer_size, COMMAND_TYPE, CONN_OPEN, CONNECTION_CLOSED, css_queue_unexpected_packet(), css_read_header(), css_return_queued_request(), DEFAULT_HEADER_DATA, packet_header::function_code, NO_ERRORS, ntohl(), ntohs(), NULL, rc, packet_header::request_id, css_conn_entry::status, packet_header::type, and WRONG_PACKET_TYPE.
Referenced by css_receive_request().
int css_receive_data | ( | CSS_CONN_ENTRY * | conn, |
unsigned short | req_id, | ||
char ** | buffer, | ||
int * | buffer_size, | ||
int | timeout | ||
) |
Definition at line 482 of file connection_cl.c.
Referenced by css_accept_new_request(), css_accept_old_request(), css_connect_to_cubrid_server(), css_internal_request_handler(), css_process_info_request(), css_process_kill_slave(), css_receive_data_from_client_with_timeout(), css_receive_data_from_server_with_timeout(), css_register_new_server(), css_register_new_server2(), css_send_to_existing_server(), css_server_connect_part_two(), get_server_state_from_master(), return_integer_data(), and return_string().
int css_receive_error | ( | CSS_CONN_ENTRY * | conn, |
unsigned short | req_id, | ||
char ** | buffer, | ||
int * | buffer_size | ||
) |
Definition at line 608 of file connection_cl.c.
References assert, begin(), packet_header::buffer_size, CANT_ALLOC_BUFFER, CONN_OPEN, CONNECTION_CLOSED, css_net_read_header(), css_net_recv(), css_queue_unexpected_error_packet(), css_queue_unexpected_packet(), css_read_remaining_bytes(), css_return_data_buffer(), css_return_queued_error(), packet_header::db_error, css_conn_entry::db_error, DEFAULT_HEADER_DATA, ERROR_TYPE, css_conn_entry::fd, NO_ERRORS, ntohl(), NULL, rc, RECORD_TRUNCATED, packet_header::request_id, css_conn_entry::status, packet_header::transaction_id, and packet_header::type.
Referenced by css_connect_to_cubrid_server(), and css_receive_data_from_server_with_timeout().
int css_receive_request | ( | CSS_CONN_ENTRY * | conn, |
unsigned short * | rid, | ||
int * | request, | ||
int * | buffer_size | ||
) |
Definition at line 455 of file connection_cl.c.
Referenced by css_internal_request_handler(), css_process_info_request(), and css_process_new_connection().
void css_remove_all_unexpected_packets | ( | CSS_CONN_ENTRY * | conn | ) |
Definition at line 1467 of file connection_cl.c.
Referenced by css_cleanup_client_queues(), css_cleanup_server_queues(), css_end_server_request(), and css_send_close_request().
char* css_return_data_buffer | ( | CSS_CONN_ENTRY * | conn, |
unsigned short | request_id, | ||
int * | buffer_size | ||
) |
Definition at line 1266 of file connection_cl.c.
References css_queue_entry::buffer, css_conn_entry::buffer_queue, css_find_queue_entry(), css_queue_remove_header_entry_ptr(), NULL, and css_queue_entry::size.
Referenced by css_queue_data_packet(), css_receive_data(), and css_receive_error().
|
static |
Definition at line 1305 of file connection_cl.c.
References css_queue_entry::buffer, css_conn_entry::buffer_queue, css_find_queue_entry(), css_queue_remove_header_entry_ptr(), css_conn_entry::data_queue, css_queue_entry::db_error, css_conn_entry::db_error, css_queue_entry::invalidate_snapshot, css_conn_entry::invalidate_snapshot, NULL, css_queue_entry::rc, css_queue_entry::size, and css_queue_entry::transaction_id.
Referenced by css_receive_data().
int css_return_queued_error | ( | CSS_CONN_ENTRY * | conn, |
unsigned short | request_id, | ||
char ** | buffer, | ||
int * | buffer_size, | ||
int * | rc | ||
) |
Definition at line 1364 of file connection_cl.c.
Referenced by css_receive_error(), css_test_for_client_errors(), and css_test_for_server_errors().
|
static |
Definition at line 1427 of file connection_cl.c.
References css_queue_entry::buffer, packet_header::buffer_size, css_queue_remove_header_entry(), css_queue_entry::db_error, css_conn_entry::db_error, packet_header::function_code, css_queue_entry::invalidate_snapshot, css_conn_entry::invalidate_snapshot, css_queue_entry::key, ntohl(), ntohs(), NULL, css_conn_entry::request_queue, TPRINTF, and css_queue_entry::transaction_id.
Referenced by css_read_one_request().
int css_send_close_request | ( | CSS_CONN_ENTRY * | conn | ) |
Definition at line 324 of file connection_cl.c.
References CLOSE_TYPE, CONN_CLOSED, CONN_OPEN, CONNECTION_CLOSED, css_net_send(), css_remove_all_unexpected_packets(), css_shutdown_conn(), packet_header::db_error, css_conn_entry::db_error, DEFAULT_HEADER_DATA, packet_header::flags, htonl(), css_conn_entry::invalidate_snapshot, NET_HEADER_FLAG_INVALIDATE_SNAPSHOT, NO_ERRORS, ntohs(), css_conn_entry::status, packet_header::transaction_id, and packet_header::type.
Referenced by css_terminate().
|
static |
Definition at line 776 of file connection_cl.c.
References css_common_connect(), css_Service_id, DATA_REQUEST, prm_get_integer_value(), PRM_ID_TCP_CONNECTION_TIMEOUT, and strlen.
Referenced by css_connect_to_cubrid_server().
|
static |
Definition at line 805 of file connection_cl.c.
References css_common_connect(), css_queue_user_data_buffer(), css_receive_data(), DATA_REQUEST, free_and_init, NO_ERRORS, ntohl(), NULL, prm_get_integer_value(), PRM_ID_TCP_CONNECTION_TIMEOUT, and SERVER_CONNECTED.
Referenced by css_connect_to_cubrid_server().
void css_shutdown_conn | ( | CSS_CONN_ENTRY * | conn | ) |
Definition at line 127 of file connection_cl.c.
Referenced by css_close_conn(), css_close_connection_to_master(), css_master_thread(), css_read_header(), css_refuse_connection_request(), css_send_close_request(), and css_send_io_vector().
int css_test_for_open_conn | ( | CSS_CONN_ENTRY * | conn | ) |
Definition at line 313 of file connection_cl.c.
References CONN_OPEN, and css_conn_entry::status.
Referenced by css_return_open_entry().
|
static |
Definition at line 99 of file connection_cl.c.
Referenced by css_initialize_conn().
|
static |
Definition at line 98 of file connection_cl.c.
Referenced by css_make_conn().