提供选项:MAAT_OPT_DEFERRED_LOAD,支持延迟初始化。

This commit is contained in:
zhengchao
2017-08-22 10:03:38 +08:00
parent 64a9284430
commit f5b1b08ee9
5 changed files with 49 additions and 20 deletions

View File

@@ -151,7 +151,7 @@ enum MAAT_INIT_OPT
MAAT_OPT_REDIS_PORT, //VALUE is a unsigned short, host order, SIZE= sizeof(unsigned short). No DEFAULT. MAAT_OPT_REDIS_PORT, //VALUE is a unsigned short, host order, SIZE= sizeof(unsigned short). No DEFAULT.
MAAT_OPT_REDIS_INDEX, //VALUE is interger *, 0~15, SIZE=sizeof(int). DEFAULT: 0. MAAT_OPT_REDIS_INDEX, //VALUE is interger *, 0~15, SIZE=sizeof(int). DEFAULT: 0.
MAAT_OPT_CMD_AUTO_NUMBERING, //VALUE is interger *, 1 or 0, SIZE=sizeof(int). DEFAULT: 1. MAAT_OPT_CMD_AUTO_NUMBERING, //VALUE is interger *, 1 or 0, SIZE=sizeof(int). DEFAULT: 1.
MAAT_OPT_DEFERRED_INIT //VALUE is NULL,SIZE is 0. Default: Deffered initialization OFF. MAAT_OPT_DEFERRED_LOAD //VALUE is NULL,SIZE is 0. Default: Deffered initialization OFF.
}; };
//return -1 if failed, return 0 on success; //return -1 if failed, return 0 on success;
int Maat_set_feather_opt(Maat_feather_t feather,enum MAAT_INIT_OPT type,const void* value,int size); int Maat_set_feather_opt(Maat_feather_t feather,enum MAAT_INIT_OPT type,const void* value,int size);

View File

@@ -605,8 +605,8 @@ int Maat_set_feather_opt(Maat_feather_t feather,enum MAAT_INIT_OPT type,const vo
} }
_feather->AUTO_NUMBERING_ON=*((int*)value); _feather->AUTO_NUMBERING_ON=*((int*)value);
break; break;
case MAAT_OPT_DEFERRED_INIT: case MAAT_OPT_DEFERRED_LOAD:
_feather->DEFERRED_INIT_ON=1; _feather->DEFERRED_LOAD_ON=1;
break; break;
default: default:
return -1; return -1;
@@ -693,7 +693,7 @@ void maat_read_full_config(_Maat_feather_t* _feather)
int Maat_initiate_feather(Maat_feather_t feather) int Maat_initiate_feather(Maat_feather_t feather)
{ {
_Maat_feather_t* _feather=(_Maat_feather_t*)feather; _Maat_feather_t* _feather=(_Maat_feather_t*)feather;
if(_feather->DEFERRED_INIT_ON==0) if(_feather->DEFERRED_LOAD_ON==0)
{ {
maat_read_full_config(_feather); maat_read_full_config(_feather);
} }

View File

@@ -3168,8 +3168,10 @@ void *thread_rule_monitor(void *arg)
//pthread_setname_np are introduced in glibc2.12 //pthread_setname_np are introduced in glibc2.12
//ret=pthread_setname_np(pthread_self(),maat_name); //ret=pthread_setname_np(pthread_self(),maat_name);
assert(ret>=0); assert(ret>=0);
if(feather->DEFERRED_INIT_ON!=0) if(feather->DEFERRED_LOAD_ON!=0)
{ {
MESA_handle_runtime_log(feather->logger,RLOG_LV_INFO,maat_module,
"Deferred Loading ON, updating in %s.",__func__);
maat_read_full_config(feather); maat_read_full_config(feather);
} }
while(feather->still_working) while(feather->still_working)

View File

@@ -355,7 +355,7 @@ struct _Maat_feather_t
struct _Maat_scanner_t *update_tmp_scanner; struct _Maat_scanner_t *update_tmp_scanner;
MESA_lqueue_head garbage_q; MESA_lqueue_head garbage_q;
int table_cnt; int table_cnt;
int DEFERRED_INIT_ON; int DEFERRED_LOAD_ON;
int GROUP_MODE_ON; int GROUP_MODE_ON;
int REDIS_MODE_ON; int REDIS_MODE_ON;
int still_working; int still_working;

View File

@@ -16,6 +16,11 @@
#include <sys/stat.h>//fstat #include <sys/stat.h>//fstat
#include <unistd.h> #include <unistd.h>
#include <dirent.h> #include <dirent.h>
const char* test_maat_redis_ip="127.0.0.1";
unsigned short test_maat_redis_port=6379;
const char* json_path="./maat_json.json";
const char* ful_cfg_dir="./rule/full/index/";
const char* inc_cfg_dir="./rule/inc/index/";
extern int my_scandir(const char *dir, struct dirent ***namelist, extern int my_scandir(const char *dir, struct dirent ***namelist,
int(*filter)(const struct dirent *), int(*filter)(const struct dirent *),
int(*compar)(const void *, const void *)); int(*compar)(const void *, const void *));
@@ -637,24 +642,40 @@ void test_command(Maat_feather_t feather)
} }
Maat_clean_status(&mid); Maat_clean_status(&mid);
} }
void maat_test_print_usage(void)
{
printf("Maat Test Usage:\n");
printf("\tSource:\n");
printf("\t\t-j Test updating from %s.\n",json_path);
printf("\t\t-u Load config from %s, and monitor %s. Need manually move inc index.\n",ful_cfg_dir,inc_cfg_dir);
printf("\t\t-r Read config redis %s:%u db0.\n",test_maat_redis_ip,test_maat_redis_port);
printf("\tOption:\n");
printf("\t\t-d Deferred Loading config.\n");
printf("example: ./maat_test -j -d\n");
return;
}
int main(int argc,char* argv[]) int main(int argc,char* argv[])
{ {
Maat_feather_t feather=NULL; Maat_feather_t feather=NULL;
int g_iThreadNum=4; int g_iThreadNum=4;
const char* table_info_path="./table_info.conf"; const char* table_info_path="./table_info.conf";
const char* json_path="./maat_json.json";
const char* ful_cfg_dir="./rule/full/index/";
const char* inc_cfg_dir="./rule/inc/index/";
const char* log_file="./test.log"; const char* log_file="./test.log";
const char* stat_file="./scan_staus.log"; const char* stat_file="./scan_staus.log";
const char* decrypt_key="mesa2017wy"; const char* decrypt_key="mesa2017wy";
int scan_interval_ms=10; int scan_interval_ms=10;
const char* redis_ip="127.0.0.1";
unsigned short redis_port=6379; int scan_detail=0,deferred_load_on=0;
int scan_detail=0;
int using_redis=0; int using_redis=0;
scan_status_t mid=NULL; scan_status_t mid=NULL;
int wait_second=400; int wait_second=400;
if(argc<2)
{
maat_test_print_usage();
return 0;
}
void *logger=MESA_create_runtime_log_handle(log_file,0); void *logger=MESA_create_runtime_log_handle(log_file,0);
feather=Maat_feather(g_iThreadNum, table_info_path, logger); feather=Maat_feather(g_iThreadNum, table_info_path, logger);
@@ -671,19 +692,20 @@ int main(int argc,char* argv[])
wait_second=14; wait_second=14;
break; break;
case 'r'://redis case 'r'://redis
Maat_set_feather_opt(feather, MAAT_OPT_REDIS_IP, redis_ip, strlen(redis_ip)+1); Maat_set_feather_opt(feather, MAAT_OPT_REDIS_IP, test_maat_redis_ip, strlen(test_maat_redis_ip)+1);
Maat_set_feather_opt(feather, MAAT_OPT_REDIS_PORT, &redis_port, sizeof(redis_port)); Maat_set_feather_opt(feather, MAAT_OPT_REDIS_PORT, &test_maat_redis_port, sizeof(test_maat_redis_port));
using_redis=1; using_redis=1;
break; break;
case 'd'://deferred
Maat_set_feather_opt(feather, MAAT_OPT_DEFERRED_LOAD, NULL,0);
deferred_load_on=1;
break;
case 'j'://json case 'j'://json
Maat_set_feather_opt(feather, MAAT_OPT_JSON_FILE_PATH, json_path, strlen(json_path)+1); Maat_set_feather_opt(feather, MAAT_OPT_JSON_FILE_PATH, json_path, strlen(json_path)+1);
break; break;
case 'd'://deferred case '?':
Maat_set_feather_opt(feather, MAAT_OPT_DEFERRED_INIT, NULL,0);
wait_second=14;
break;
default: default:
maat_test_print_usage();
return 0; return 0;
break; break;
} }
@@ -701,6 +723,11 @@ int main(int argc,char* argv[])
printf("Maat initial error, see %s\n",log_file); printf("Maat initial error, see %s\n",log_file);
return -1; return -1;
} }
if(deferred_load_on==1)
{
printf("Deferred Load ON, Waiting...\n");
sleep(1);
}
test_plugin_table(feather, "QD_ENTRY_INFO",logger); test_plugin_table(feather, "QD_ENTRY_INFO",logger);
test_string_full_scan(feather, "HTTP_URL", &mid); test_string_full_scan(feather, "HTTP_URL", &mid);