修复延迟更新执行判断的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
,group_rule);
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;
}
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
,NULL);
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;
default:
assert(0);
@@ -2464,6 +2464,7 @@ int add_group_rule(struct Maat_table_desc* table, struct db_group_rule_t* db_gro
return -1;
}
}
scanner->to_update_group_cnt++;
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)
@@ -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);
scanner->to_update_group_cnt++;
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)
@@ -2570,7 +2572,7 @@ int add_compile_rule(struct Maat_table_desc* table, struct Maat_compile_rule* db
}
}
cg_relation->compile=db_compile_rule;
scanner->to_update_compile_cnt++;
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);
}
scanner->to_update_compile_cnt++;
return 1;
}
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)
{
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);
}
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;
}
@@ -3889,7 +3893,7 @@ void maat_finish_cb(void* u_para)
feather->scanner->cfg_num=scanner_rule_num(feather->scanner);
feather->scanner->version=feather->maat_version;
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)
{
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 tmp_dir[MAX_TABLE_NAME_LEN]={0};
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
// be null terminated if it contains fewer bytes.
@@ -4124,8 +4129,9 @@ void *thread_rule_monitor(void *arg)
if(feather->scanner!=NULL)
{
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;
if(feather->postpone_q_size>0&&time(NULL)-feather->scanner->last_update_time>=feather->effect_interval_ms/1000)
feather->postpone_q_size=expr_wait_q_cnt+feather->scanner->gie_update_q_size;
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
,feather->garbage_q