修复延迟更新执行判断的bug,修复 #15

This commit is contained in:
zhengchao
2019-06-15 14:01:06 +08:00
parent 0ed7476e0d
commit 93da3eea24
2 changed files with 17 additions and 9 deletions

View File

@@ -2347,7 +2347,7 @@ int add_digest_rule(struct Maat_table_desc* table,struct db_digest_rule* db_dige
,db_digest_rule->confidence_degree ,db_digest_rule->confidence_degree
,group_rule); ,group_rule);
MESA_lqueue_join_tail(table_rt->similar.update_q, &digest_rule, sizeof(void*)); MESA_lqueue_join_tail(table_rt->similar.update_q, &digest_rule, sizeof(void*));
scanner->gie_total_q_size++; scanner->gie_update_q_size++;
return 0; return 0;
} }
int del_region_rule(struct Maat_table_desc* table,int region_id,int group_id,int rule_type,struct Maat_scanner_t *maat_scanner,void* logger) int del_region_rule(struct Maat_table_desc* table,int region_id,int group_id,int rule_type,struct Maat_scanner_t *maat_scanner,void* logger)
@@ -2401,7 +2401,7 @@ int del_region_rule(struct Maat_table_desc* table,int region_id,int group_id,int
,0 ,0
,NULL); ,NULL);
MESA_lqueue_join_tail(maat_scanner->table_rt[table->table_id]->similar.update_q,&digest_rule, sizeof(void*)); MESA_lqueue_join_tail(maat_scanner->table_rt[table->table_id]->similar.update_q,&digest_rule, sizeof(void*));
maat_scanner->gie_total_q_size++; maat_scanner->gie_update_q_size++;
break; break;
default: default:
assert(0); assert(0);
@@ -2464,6 +2464,7 @@ int add_group_rule(struct Maat_table_desc* table, struct db_group_rule_t* db_gro
return -1; return -1;
} }
} }
scanner->to_update_group_cnt++;
return 1; return 1;
} }
int del_group_rule(struct Maat_table_desc* table, struct db_group_rule_t* db_group_rule, struct Maat_scanner_t *scanner, void* logger) int del_group_rule(struct Maat_table_desc* table, struct db_group_rule_t* db_group_rule, struct Maat_scanner_t *scanner, void* logger)
@@ -2550,6 +2551,7 @@ int del_group_rule(struct Maat_table_desc* table, struct db_group_rule_t* db_gro
} }
} }
destroy_group_rule(group_rule, DESTROY_GROUP_BY_PARENT, scanner); destroy_group_rule(group_rule, DESTROY_GROUP_BY_PARENT, scanner);
scanner->to_update_group_cnt++;
return 1; return 1;
} }
int add_compile_rule(struct Maat_table_desc* table, struct Maat_compile_rule* db_compile_rule, struct Maat_scanner_t *scanner, void* logger) int add_compile_rule(struct Maat_table_desc* table, struct Maat_compile_rule* db_compile_rule, struct Maat_scanner_t *scanner, void* logger)
@@ -2570,7 +2572,7 @@ int add_compile_rule(struct Maat_table_desc* table, struct Maat_compile_rule* db
} }
} }
cg_relation->compile=db_compile_rule; cg_relation->compile=db_compile_rule;
scanner->to_update_compile_cnt++;
return 0; return 0;
} }
@@ -2596,6 +2598,7 @@ int del_compile_rule(struct Maat_table_desc* table, int compile_id, struct Maat_
{ {
destroy_compile_group_relation(cg_relation, scanner); destroy_compile_group_relation(cg_relation, scanner);
} }
scanner->to_update_compile_cnt++;
return 1; return 1;
} }
void update_group_rule(struct Maat_table_desc* table,const char* table_line,struct Maat_scanner_t *scanner,void* logger) void update_group_rule(struct Maat_table_desc* table,const char* table_line,struct Maat_scanner_t *scanner,void* logger)
@@ -3759,7 +3762,6 @@ void do_scanner_update(struct Maat_scanner_t* scanner, MESA_lqueue_head garbage_
} }
} }
scanner->gie_total_q_size=0;
if(scanner->tmp_district_map!=NULL) if(scanner->tmp_district_map!=NULL)
{ {
tmp_map=scanner->district_map; tmp_map=scanner->district_map;
@@ -3768,7 +3770,9 @@ void do_scanner_update(struct Maat_scanner_t* scanner, MESA_lqueue_head garbage_
garbage_bagging(GARBAGE_MAP_STR2INT, tmp_map, garbage_q); garbage_bagging(GARBAGE_MAP_STR2INT, tmp_map, garbage_q);
} }
scanner->last_update_time=time(NULL); scanner->last_update_time=time(NULL);
scanner->gie_update_q_size=0;
scanner->to_update_group_cnt=0;
scanner->to_update_compile_cnt=0;
return; return;
} }
@@ -3889,7 +3893,7 @@ void maat_finish_cb(void* u_para)
feather->scanner->cfg_num=scanner_rule_num(feather->scanner); feather->scanner->cfg_num=scanner_rule_num(feather->scanner);
feather->scanner->version=feather->maat_version; feather->scanner->version=feather->maat_version;
expr_wait_q_cnt=MESA_lqueue_get_count(feather->scanner->region_update_q); expr_wait_q_cnt=MESA_lqueue_get_count(feather->scanner->region_update_q);
feather->postpone_q_size=expr_wait_q_cnt+feather->scanner->gie_total_q_size; feather->postpone_q_size=expr_wait_q_cnt+feather->scanner->gie_update_q_size;
if(time(NULL)-feather->scanner->last_update_time>=feather->effect_interval_ms/1000) if(time(NULL)-feather->scanner->last_update_time>=feather->effect_interval_ms/1000)
{ {
do_scanner_update(feather->scanner do_scanner_update(feather->scanner
@@ -3991,6 +3995,7 @@ void *thread_rule_monitor(void *arg)
char md5_tmp[MD5_DIGEST_LENGTH*2+1]={0}; char md5_tmp[MD5_DIGEST_LENGTH*2+1]={0};
char tmp_dir[MAX_TABLE_NAME_LEN]={0}; char tmp_dir[MAX_TABLE_NAME_LEN]={0};
struct stat attrib; struct stat attrib;
size_t total_wait_rule_cnt=0;
char maat_name[16];//Defined by prctl: The name can be up to 16 bytes long,and should char maat_name[16];//Defined by prctl: The name can be up to 16 bytes long,and should
// be null terminated if it contains fewer bytes. // be null terminated if it contains fewer bytes.
@@ -4124,8 +4129,9 @@ void *thread_rule_monitor(void *arg)
if(feather->scanner!=NULL) if(feather->scanner!=NULL)
{ {
expr_wait_q_cnt=MESA_lqueue_get_count(feather->scanner->region_update_q); expr_wait_q_cnt=MESA_lqueue_get_count(feather->scanner->region_update_q);
feather->postpone_q_size=expr_wait_q_cnt+feather->scanner->gie_total_q_size; feather->postpone_q_size=expr_wait_q_cnt+feather->scanner->gie_update_q_size;
if(feather->postpone_q_size>0&&time(NULL)-feather->scanner->last_update_time>=feather->effect_interval_ms/1000) total_wait_rule_cnt=feather->postpone_q_size+feather->scanner->to_update_compile_cnt+feather->scanner->to_update_group_cnt;
if(total_wait_rule_cnt>0&&time(NULL)-feather->scanner->last_update_time>=feather->effect_interval_ms/1000)
{ {
do_scanner_update(feather->scanner do_scanner_update(feather->scanner
,feather->garbage_q ,feather->garbage_q

View File

@@ -283,7 +283,9 @@ struct Maat_scanner_t
time_t last_update_time; time_t last_update_time;
mcore_long_t ref_cnt; mcore_long_t ref_cnt;
rule_scanner_t region; rule_scanner_t region;
long gie_total_q_size; size_t gie_update_q_size;
size_t to_update_group_cnt;
size_t to_update_compile_cnt;
struct Maat_table_runtime* table_rt[MAX_TABLE_NUM]; struct Maat_table_runtime* table_rt[MAX_TABLE_NUM];