支持文件接口用户自定义信息;
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
#include "doris_server_http.h"
|
||||
|
||||
struct doris_global_info g_doris_server_info;
|
||||
static unsigned long doris_vesion_20210722=20210722L;
|
||||
static unsigned long doris_vesion_20210726=20210726L;
|
||||
|
||||
int doris_mkdir_according_path(const char * path)
|
||||
{
|
||||
@@ -101,6 +101,7 @@ int32_t doris_read_profile_configs(const char *config_file)
|
||||
}
|
||||
MESA_load_profile_uint_def(config_file, "DORIS_SERVER", "cache_file_frag_size", &g_doris_server_info.cache_frag_size, 67108864);
|
||||
MESA_load_profile_uint_def(config_file, "DORIS_SERVER", "doris_server_role_on", &g_doris_server_info.server_role_sw, 1);
|
||||
MESA_load_profile_uint_def(config_file, "DORIS_SERVER", "index_file_format_maat", &g_doris_server_info.idx_file_maat, 0);
|
||||
|
||||
MESA_load_profile_uint_def(config_file, "DORIS_SERVER", "scan_index_file_interval", &g_doris_server_info.scan_idx_interval, 10);
|
||||
MESA_load_profile_uint_def(config_file, "DORIS_SERVER", "https_connection_on", &g_doris_server_info.ssl_conn_on, 0);
|
||||
@@ -326,7 +327,7 @@ int main(int argc, char **argv)
|
||||
evhttp_set_cb(manager_http, "/doris/statistic/status", manager_statistic_status_requests_cb, NULL);
|
||||
evhttp_set_cb(manager_http, "/doris/statistic/threads", manager_statistic_threads_requests_cb, NULL);
|
||||
evhttp_set_gencb(manager_http, manager_generic_requests_cb, NULL);
|
||||
g_doris_server_info.monitor = MESA_Monitor_instance_evhttp_new(manager_http, doris_vesion_20210722);
|
||||
g_doris_server_info.monitor = MESA_Monitor_instance_evhttp_new(manager_http, doris_vesion_20210726);
|
||||
if(evhttp_accept_socket(manager_http, g_doris_server_info.manager))
|
||||
{
|
||||
printf("evhttp_accept_socket %d error!\n", g_doris_server_info.manager);
|
||||
|
||||
@@ -81,6 +81,7 @@ struct doris_global_info
|
||||
|
||||
struct doris_business business[MAX_BUSINESS_NUM];
|
||||
u_int32_t business_num;
|
||||
u_int32_t idx_file_maat;
|
||||
map<string, struct doris_business*> *name2business;
|
||||
map<string, struct doris_parameter *> *confile2param;
|
||||
|
||||
|
||||
@@ -181,7 +181,8 @@ void doris_config_file_version_error(struct doris_instance *instance, void *user
|
||||
MESA_RUNTIME_LOGV3(g_doris_server_info.log_runtime, RLOG_LV_FATAL, "business: %s, Version %llu error, rolling back...", save->business->bizname, save->version);
|
||||
}
|
||||
|
||||
void doris_config_file_cfgfile_start(struct doris_instance *instance, const char *tablename, size_t size, u_int32_t cfgnum, void *userdata)
|
||||
void doris_config_file_cfgfile_start(struct doris_instance *instance, const char *tablename,
|
||||
size_t size, u_int32_t cfgnum, const char *userregion, void *userdata)
|
||||
{
|
||||
struct confile_save *save=(struct confile_save *)userdata;
|
||||
struct tm *localtm, savetime;
|
||||
@@ -198,8 +199,14 @@ void doris_config_file_cfgfile_start(struct doris_instance *instance, const char
|
||||
doris_mkdir_according_path(dir);
|
||||
}
|
||||
snprintf(save->cfg_file_path, 256, "%s/%s.%010lu", dir, tablename, save->version);
|
||||
fprintf(save->fp_idx_file, "%s\t%u\t%s\n", tablename, cfgnum, save->cfg_file_path);
|
||||
|
||||
if(g_doris_server_info.idx_file_maat) //MAAT<41><54>ʽ<EFBFBD><CABD>֪ͨ<CDA8>ļ<EFBFBD>
|
||||
{
|
||||
fprintf(save->fp_idx_file, "%s\t%u\t%s\n", tablename, cfgnum, save->cfg_file_path);
|
||||
}
|
||||
else //ת<><D7AA><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
{
|
||||
fprintf(save->fp_idx_file, "%s\t%u\t%s\t%s\n", tablename, cfgnum, save->cfg_file_path, userregion);
|
||||
}
|
||||
if(NULL == (save->fp_cfg_file = fopen(save->cfg_file_path, "w+")))
|
||||
{
|
||||
MESA_RUNTIME_LOGV3(g_doris_server_info.log_runtime, RLOG_LV_FATAL, "business: %s, fopen %s failed: %s", save->business->bizname, save->cfg_file_path, strerror(errno));
|
||||
@@ -299,7 +306,8 @@ void doris_config_mem_version_error(struct doris_instance *instance, void *userd
|
||||
save->cur_vernode = NULL;
|
||||
}
|
||||
|
||||
void doris_config_mem_cfgfile_start(struct doris_instance *instance, const char *tablename, size_t size, u_int32_t cfgnum, void *userdata)
|
||||
void doris_config_mem_cfgfile_start(struct doris_instance *instance, const char *tablename,
|
||||
size_t size, u_int32_t cfgnum, const char *userregion, void *userdata)
|
||||
{
|
||||
struct confile_save *save=(struct confile_save *)userdata;
|
||||
|
||||
@@ -307,7 +315,10 @@ void doris_config_mem_cfgfile_start(struct doris_instance *instance, const char
|
||||
cJSON_AddStringToObject(save->cur_vernode->table_meta, "tablename", tablename);
|
||||
cJSON_AddNumberToObject(save->cur_vernode->table_meta, "cfg_num", cfgnum);
|
||||
cJSON_AddNumberToObject(save->cur_vernode->table_meta, "size", size);
|
||||
|
||||
if(userregion != NULL)
|
||||
{
|
||||
cJSON_AddStringToObject(save->cur_vernode->table_meta, "user_region", userregion);
|
||||
}
|
||||
save->cur_table = (struct table_list_node *)calloc(1, sizeof(struct table_list_node));
|
||||
snprintf(save->cur_table->tablename, 64, "%s", tablename);
|
||||
save->cur_table->filesize = size;
|
||||
@@ -465,12 +476,13 @@ void doris_config_localmem_version_error(struct doris_instance *instance, void *
|
||||
doris_config_mem_version_error(instance, userdata);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void doris_config_localmem_cfgfile_start(struct doris_instance *instance, const char *tablename,
|
||||
size_t size, u_int32_t cfgnum, const char *userregion, void *userdata)
|
||||
{
|
||||
doris_config_common_cfgfile_start((struct confile_save *)userdata, cfgnum);
|
||||
if(g_doris_server_info.server_role_sw)
|
||||
{
|
||||
{
|
||||
doris_config_mem_cfgfile_start(instance, tablename, size, cfgnum, userregion, userdata);
|
||||
}
|
||||
}
|
||||
@@ -537,18 +549,19 @@ void doris_config_version_error(struct doris_instance *instance, void *userdata)
|
||||
doris_config_mem_version_error(instance, userdata);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void doris_config_cfgfile_start(struct doris_instance *instance, const char *tablename,
|
||||
size_t size, u_int32_t cfgnum, const char *userregion, void *userdata)
|
||||
{
|
||||
struct confile_save *save=(struct confile_save *)userdata;
|
||||
|
||||
doris_config_common_cfgfile_start((struct confile_save *)userdata, cfgnum);
|
||||
if(save->business->write_file_sw)
|
||||
{
|
||||
{
|
||||
doris_config_file_cfgfile_start(instance, tablename, size, cfgnum, userregion, userdata);
|
||||
}
|
||||
if(g_doris_server_info.server_role_sw)
|
||||
{
|
||||
{
|
||||
doris_config_mem_cfgfile_start(instance, tablename, size, cfgnum, userregion, userdata);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ int cm_read_cfg_index_file(const char* path, struct cfg_table_info* idx/*OUT*/,
|
||||
{
|
||||
memset(line, 0, sizeof(line));
|
||||
fgets(line, sizeof(line), fp);
|
||||
ret=sscanf(line,"%s\t%d\t%s\t%s", idx[i].table_name, &(idx[i].cfg_num), idx[i].cfg_path, idx[i].encryp_algorithm);
|
||||
ret=sscanf(line,"%[^ \t]%*[ \t]%d%*[ \t]%s%*[ \t]%s", idx[i].table_name, &(idx[i].cfg_num), idx[i].cfg_path, idx[i].user_region);
|
||||
if((ret!=3 && ret!=4) || idx[i].cfg_num==0)//jump over empty line
|
||||
{
|
||||
continue;
|
||||
@@ -231,7 +231,7 @@ bool doris_read_table_file(struct doris_idxfile_scanner *scanner, struct cfg_tab
|
||||
FILE *fp;
|
||||
size_t readlen, remainlen, oncesize;
|
||||
MD5_CTX md5ctx;
|
||||
char md5buffer[64];
|
||||
char md5buffer[64], *user_region=NULL;
|
||||
|
||||
if((fp = fopen(table->cfg_path, "r")) == NULL)
|
||||
{
|
||||
@@ -240,7 +240,11 @@ bool doris_read_table_file(struct doris_idxfile_scanner *scanner, struct cfg_tab
|
||||
}
|
||||
MD5_Init(&md5ctx);
|
||||
|
||||
doris_cbs->cfgfile_start(NULL, table->table_name, table->filesize, table->cfg_num, doris_cbs->userdata);
|
||||
if(table->user_region[0] != '\0')
|
||||
{
|
||||
user_region = table->user_region;
|
||||
}
|
||||
doris_cbs->cfgfile_start(NULL, table->table_name, table->filesize, table->cfg_num, user_region, doris_cbs->userdata);
|
||||
remainlen = table->filesize;
|
||||
while(remainlen > 0)
|
||||
{
|
||||
@@ -273,6 +277,10 @@ cJSON *doris_index_version_start(int64_t version, struct cfg_table_info *table_a
|
||||
cJSON_AddStringToObject(tmp, "tablename", table_array[i].table_name);
|
||||
cJSON_AddNumberToObject(tmp, "size", table_array[i].filesize);
|
||||
cJSON_AddNumberToObject(tmp, "cfg_num", table_array[i].cfg_num);
|
||||
if(table_array->user_region[0] != '\0')
|
||||
{
|
||||
cJSON_AddStringToObject(tmp, "user_region", table_array[i].user_region);
|
||||
}
|
||||
cJSON_AddItemToArray(array, tmp);
|
||||
}
|
||||
cJSON_AddItemToObject(meta, "configs", array);
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#define CM_MAX_TABLE_NUM 256
|
||||
#define MAX_CONFIG_FN_LEN 256
|
||||
#define MAX_CONFIG_LINE (1024*16)
|
||||
#define MAX_USERREGION_LEN 4096
|
||||
|
||||
#define ONCE_BUF_SIZE 1048576
|
||||
|
||||
@@ -35,7 +36,7 @@ struct cfg_table_info
|
||||
char cfg_path[MAX_CONFIG_FN_LEN];
|
||||
int cfg_num;
|
||||
size_t filesize;
|
||||
char encryp_algorithm[MAX_CONFIG_FN_LEN];
|
||||
char user_region[MAX_USERREGION_LEN];
|
||||
};
|
||||
|
||||
struct doris_idxfile_scanner
|
||||
|
||||
Reference in New Issue
Block a user