修复延迟更新执行判断的bug,修复 #15
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user