141 lines
3.9 KiB
C
141 lines
3.9 KiB
C
/*
|
|
* Copyright (c) 2020 Huawei Technologies Co.,Ltd.
|
|
*
|
|
* openGauss is licensed under Mulan PSL v2.
|
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
* You may obtain a copy of Mulan PSL v2 at:
|
|
*
|
|
* http://license.coscl.org.cn/MulanPSL2
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
* See the Mulan PSL v2 for more details.
|
|
* ---------------------------------------------------------------------------------------
|
|
*
|
|
* hotpatch.h
|
|
*
|
|
*
|
|
*
|
|
* IDENTIFICATION
|
|
* src/include/hotpatch/hotpatch.h
|
|
*
|
|
* ---------------------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef HOTPATCH_H
|
|
#define HOTPATCH_H
|
|
|
|
#define HP_OK (0)
|
|
#define HP_ERR (-1)
|
|
const int g_max_length_time = 64;
|
|
const int g_max_length_act = 16;
|
|
const int g_max_length_path = 4096;
|
|
const int g_max_length_std_path = 4096;
|
|
const int g_first_err = 0x1000;
|
|
const int g_lock_file_size = 1024;
|
|
const int g_length_statstr = 50;
|
|
const int g_max_number_patch = 1000;
|
|
const int g_length_okstr = 15;
|
|
const int g_length_list = 4;
|
|
const int g_max_length_line = 128;
|
|
const int g_rev_bytes_info = 3;
|
|
|
|
#define PATCH_MODULE_GAUSSDB (0)
|
|
#define PATCH_MODULE_GTM (1)
|
|
|
|
#define MAX_LENGTH_RETURN_STRING (1024)
|
|
|
|
typedef enum HP_NODE_TYPE {
|
|
HP_NODE_GAUSSDB,
|
|
HP_NODE_GTM,
|
|
HP_NODE_CMAGENT,
|
|
HP_NODE_CMSERVER,
|
|
HP_NODE_OMMONITOR,
|
|
HP_NODE_MAX,
|
|
} HP_NODE_TYPE_T;
|
|
|
|
typedef enum HP_STATE {
|
|
HP_STATE_UNKNOW,
|
|
HP_STATE_UNLOAD,
|
|
HP_STATE_DEACTIVE,
|
|
HP_STATE_ACTIVED,
|
|
} HP_STATE_T;
|
|
|
|
typedef enum HP_ERROR_CODE {
|
|
HP_ERROR_NAME_NUMBER = g_first_err,
|
|
HP_ERROR_INSUFFICIENT_MEM,
|
|
HP_ERROR_SUFFIX_INCORRECT,
|
|
HP_ERROR_UNKNOWN_NAME,
|
|
HP_ERROR_EMPTY_NAME,
|
|
HP_ERROR_EMPTY_COMMAND,
|
|
HP_ERROR_LOADED_BEFORE,
|
|
HP_ERROR_CANNOT_UNLOAD,
|
|
HP_ERROR_CANNOT_ACTIVE,
|
|
HP_ERROR_CANNOT_DEACTIVE,
|
|
HP_ERROR_RANGE,
|
|
HP_ERROR_NO_PATCH_LOADED,
|
|
HP_ERROR_EMPTY_PARAMETER,
|
|
HP_ERROR_INITED_BEFORE,
|
|
HP_ERROR_LIB_INIT_ERROR,
|
|
HP_ERROR_NOT_INIT,
|
|
HP_ERROR_UNKNOWN_ACTION,
|
|
HP_ERROR_FETCH_ERROR,
|
|
HP_ERROR_VERSION,
|
|
HP_ERROR_GTM_UNCONNECTED,
|
|
HP_ERROR_GTM_START_ERROR,
|
|
HP_ERROR_GTM_SEND_ERROR,
|
|
HP_ERROR_GTM_SEND_END_ERROR,
|
|
HP_ERROR_GTM_FLUSH_ERROR,
|
|
HP_ERROR_GTM_RECEIVE_ERROR,
|
|
HP_ERROR_OPERATION_LOG_ERR,
|
|
HP_ERROR_COMMUNICATION_ERR,
|
|
HP_ERROR_UNDER_PATCHING,
|
|
HP_ERROR_SYSTEM_ERROR,
|
|
HP_ERROR_FILE_SEEK_ERROR,
|
|
HP_ERROR_FILE_WRITE_ERROR,
|
|
HP_ERROR_FILE_READ_ERROR,
|
|
HP_ERROR_FILE_OPEN_ERROR,
|
|
HP_ERROR_FILE_SYNC_ERROR,
|
|
HP_ERROR_FILE_LOCK_ERROR,
|
|
HP_ERROR_FILE_RENAME_ERROR,
|
|
HP_ERROR_FILE_PATH_ERROR,
|
|
HP_ERROR_PATCH_NUMBER_ERROR,
|
|
HP_ERROR_PATCH_INFO_ERROR,
|
|
HP_ERROR_CM_DATADIR_NULL,
|
|
HP_ERROR_COMMON_ERROR_MAX,
|
|
} HP_ERROR_CODE_T;
|
|
|
|
typedef enum HP_INFO_STATE {
|
|
HP_INFO_NOT_EXIST,
|
|
HP_INFO_EXIST,
|
|
HP_INFO_NEED_RFRESH,
|
|
} HP_INFO_STATE_T;
|
|
|
|
typedef struct PATCH_LOG {
|
|
char time_stamp[g_max_length_time];
|
|
char operation[g_max_length_act];
|
|
char patch_name[g_max_length_path];
|
|
char rev[16];
|
|
} PATCH_LOG_T;
|
|
|
|
typedef struct PATCH_INFO_HEADER {
|
|
int max_patch_number; // record how many patchs has been loaded
|
|
int rev;
|
|
} PATCH_INFO_HEADER_T;
|
|
|
|
typedef struct PATCH_INFO {
|
|
int patch_number;
|
|
char patch_state;
|
|
char rev[g_rev_bytes_info];
|
|
char patch_name[g_max_length_path];
|
|
} PATCH_INFO_T;
|
|
|
|
typedef void (*HOTPATCH_LOG_FUNC)(unsigned int level, const char* fmt);
|
|
|
|
extern int hotpatch_init(int node_type, const char* default_dir, HOTPATCH_LOG_FUNC log_func);
|
|
extern int exec_hotpatch_command(const char* filename, const char* action, char* output_string, size_t string_length);
|
|
void patch_err_info_handler(int error_code, char* out_string, size_t string_length);
|
|
char* strip_path_from_pathname(const char* name_withpath);
|
|
#endif
|