修复Maat_cmd删除配置时遗漏域配置的BUG。
This commit is contained in:
@@ -19,15 +19,7 @@ const char* rm_label_sset="MAAT_LABEL_INDEX";
|
|||||||
const char* rm_version_sset="MAAT_VERSION_TIMER";
|
const char* rm_version_sset="MAAT_VERSION_TIMER";
|
||||||
const static int MAAT_REDIS_SYNC_TIME=30*60;
|
const static int MAAT_REDIS_SYNC_TIME=30*60;
|
||||||
|
|
||||||
struct serial_rule_t //rm= Redis Maat
|
|
||||||
{
|
|
||||||
enum MAAT_OPERATION op;//0: delete, 1: add.
|
|
||||||
int rule_id;
|
|
||||||
int label_id;
|
|
||||||
long long timeout; // absolute unix time.
|
|
||||||
char table_name[256];
|
|
||||||
char* table_line;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Maat_cmd_inner_t
|
struct _Maat_cmd_inner_t
|
||||||
{
|
{
|
||||||
@@ -574,10 +566,11 @@ int _get_maat_redis_value(redisContext *c,struct serial_rule_t* rule_list,int ru
|
|||||||
free(retry_ids);
|
free(retry_ids);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int get_maat_redis_value(redisContext *c,struct serial_rule_t* rule_list,int rule_num,void* logger)
|
int get_maat_redis_value(redisContext *c,struct serial_rule_t* rule_list,int rule_num,void* logger,int print_process)
|
||||||
{
|
{
|
||||||
int max_redis_batch=4*1024,batch_cnt=0;
|
int max_redis_batch=4*1024,batch_cnt=0;
|
||||||
int success_cnt=0,ret=0;
|
int success_cnt=0,ret=0;
|
||||||
|
int next_print=10;
|
||||||
while(success_cnt<rule_num)
|
while(success_cnt<rule_num)
|
||||||
{
|
{
|
||||||
batch_cnt=MIN(rule_num-success_cnt,max_redis_batch);
|
batch_cnt=MIN(rule_num-success_cnt,max_redis_batch);
|
||||||
@@ -590,6 +583,18 @@ int get_maat_redis_value(redisContext *c,struct serial_rule_t* rule_list,int rul
|
|||||||
{
|
{
|
||||||
success_cnt+=batch_cnt;
|
success_cnt+=batch_cnt;
|
||||||
}
|
}
|
||||||
|
if(print_process==1)
|
||||||
|
{
|
||||||
|
if((success_cnt*100)/rule_num>next_print)
|
||||||
|
{
|
||||||
|
printf(" >%d%%",next_print);
|
||||||
|
next_print+=10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(print_process==1)
|
||||||
|
{
|
||||||
|
printf(" >100%%\n");
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -657,7 +662,7 @@ int reconstruct_cmd(struct _Maat_feather_t *feather, struct _Maat_cmd_inner_t* _
|
|||||||
group_cmd=&(cmd->groups[grp_idx]);
|
group_cmd=&(cmd->groups[grp_idx]);
|
||||||
group_cmd->group_id=group_inner->group_id;
|
group_cmd->group_id=group_inner->group_id;
|
||||||
|
|
||||||
if(group_inner->ref_cnt>0)
|
if(group_inner->ref_cnt>1)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -665,17 +670,16 @@ int reconstruct_cmd(struct _Maat_feather_t *feather, struct _Maat_cmd_inner_t* _
|
|||||||
group_cmd->regions=(struct Maat_region_t*)calloc(sizeof(struct Maat_region_t),group_cmd->region_num);
|
group_cmd->regions=(struct Maat_region_t*)calloc(sizeof(struct Maat_region_t),group_cmd->region_num);
|
||||||
for(j=0;j<group_inner->region_boundary;j++)
|
for(j=0;j<group_inner->region_boundary;j++)
|
||||||
{
|
{
|
||||||
region_inner=(struct _Maat_region_inner_t*)dynamic_array_read(group_inner->regions,i);
|
region_inner=(struct _Maat_region_inner_t*)dynamic_array_read(group_inner->regions,j);
|
||||||
if(region_inner==NULL)
|
if(region_inner==NULL)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
region_cmd=&(group_cmd->regions[group_cmd->region_num]);
|
region_cmd=&(group_cmd->regions[j]);
|
||||||
region_cmd->table_name=_maat_strdup(feather->p_table_info[region_inner->table_id]->table_name[0]);
|
region_cmd->table_name=_maat_strdup(feather->p_table_info[region_inner->table_id]->table_name[0]);
|
||||||
region_cmd->region_id=region_inner->table_id;
|
region_cmd->region_id=region_inner->region_id;
|
||||||
//NOTICE: region_type only avilable when OP_ADD,
|
//NOTICE: region_type only avilable when OP_ADD,
|
||||||
region_cmd->region_type=REGION_EXPR;
|
region_cmd->region_type=REGION_EXPR;
|
||||||
group_cmd->region_num++;
|
|
||||||
}
|
}
|
||||||
grp_idx++;
|
grp_idx++;
|
||||||
}
|
}
|
||||||
@@ -1036,7 +1040,7 @@ void redis_monitor_traverse(unsigned int version,redisContext *c,
|
|||||||
}
|
}
|
||||||
if(rule_num>0)
|
if(rule_num>0)
|
||||||
{
|
{
|
||||||
ret=get_maat_redis_value(c,rule_list,rule_num, logger);
|
ret=get_maat_redis_value(c,rule_list,rule_num, logger,0);
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
{
|
{
|
||||||
MESA_handle_runtime_log(logger,RLOG_LV_INFO,maat_redis_monitor,"Get Redis value failed, abandon update.");
|
MESA_handle_runtime_log(logger,RLOG_LV_INFO,maat_redis_monitor,"Get Redis value failed, abandon update.");
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
#include "stream_fuzzy_hash.h"
|
#include "stream_fuzzy_hash.h"
|
||||||
#include "gram_index_engine.h"
|
#include "gram_index_engine.h"
|
||||||
|
|
||||||
int MAAT_FRAME_VERSION_2_0_20170929=1;
|
int MAAT_FRAME_VERSION_2_1_20171002=1;
|
||||||
|
|
||||||
const char* CHARSET_STRING[]={"NONE","gbk","big5","unicode","utf8","bin",
|
const char* CHARSET_STRING[]={"NONE","gbk","big5","unicode","utf8","bin",
|
||||||
"unicode_ascii_esc","unicode_ascii_aligned","unicode_ncr_dec","unicode_ncr_hex","url_encode_gb2312","url_encode_utf8",""};
|
"unicode_ascii_esc","unicode_ascii_aligned","unicode_ncr_dec","unicode_ncr_hex","url_encode_gb2312","url_encode_utf8",""};
|
||||||
@@ -3298,6 +3298,8 @@ void *thread_rule_monitor(void *arg)
|
|||||||
pthread_mutex_lock(&(feather->redis_write_lock));
|
pthread_mutex_lock(&(feather->redis_write_lock));
|
||||||
redisFree(feather->redis_read_ctx);
|
redisFree(feather->redis_read_ctx);
|
||||||
feather->redis_read_ctx=NULL;
|
feather->redis_read_ctx=NULL;
|
||||||
|
redisFree(feather->redis_write_ctx);
|
||||||
|
feather->redis_write_ctx=NULL;
|
||||||
pthread_mutex_unlock(&(feather->redis_write_lock));
|
pthread_mutex_unlock(&(feather->redis_write_lock));
|
||||||
}
|
}
|
||||||
free(feather);
|
free(feather);
|
||||||
|
|||||||
Reference in New Issue
Block a user