优化maat_redis_tool在dump内容外键时的printf输出。

This commit is contained in:
zhengchao
2018-09-26 19:49:29 +08:00
parent a49222cc1d
commit d73077ec4a
4 changed files with 25 additions and 9 deletions

View File

@@ -1563,7 +1563,7 @@ struct foreign_conts_track
int rule_idx;
int foreign_idx;
};
void _get_foreign_conts(redisContext *ctx, struct serial_rule_t* rule_list, int rule_num, void *logger)
void _get_foreign_conts(redisContext *ctx, struct serial_rule_t* rule_list, int rule_num, int print_fn, void *logger)
{
int i=0, j=0, ret=0;
int key_num=0;
@@ -1620,6 +1620,10 @@ void _get_foreign_conts(redisContext *ctx, struct serial_rule_t* rule_list, int
fwrite(reply->str, 1, reply->len, fp);
fclose(fp);
fp=NULL;
if(print_fn==1)
{
printf("Written foreign content %s\n",p->f_keys[track[i].foreign_idx].filename);
}
}
}
freeReplyObject(reply);
@@ -1627,14 +1631,14 @@ void _get_foreign_conts(redisContext *ctx, struct serial_rule_t* rule_list, int
free(track);
return;
}
void get_foreign_conts(redisContext *ctx, struct serial_rule_t* rule_list, int rule_num, void *logger)
void get_foreign_conts(redisContext *ctx, struct serial_rule_t* rule_list, int rule_num, int print_fn, void *logger)
{
int max_redis_batch=4*1024,batch_cnt=0;
int success_cnt=0;
while(success_cnt<rule_num)
{
batch_cnt=MIN(rule_num-success_cnt,max_redis_batch);
_get_foreign_conts(ctx,rule_list+success_cnt,batch_cnt,logger);
_get_foreign_conts(ctx,rule_list+success_cnt,batch_cnt,print_fn,logger);
success_cnt+=batch_cnt;
}
return;
@@ -1702,7 +1706,7 @@ void redis_monitor_traverse(long long version,redisContext *c,
}
ret=get_foreign_keys_define(c, rule_list, rule_num, feather, feather->foreign_cont_dir, logger);
if(ret>0)
{
{
get_foreign_conts(c, rule_list, rule_num, 0, logger);
}
}

View File

@@ -3009,6 +3009,13 @@ void garbage_bury(MESA_lqueue_head garbage_q,int timeout,void *logger)
"Foreign content file %s remove failed.",
bag->filename);
}
else
{
MESA_handle_runtime_log(logger,RLOG_LV_DEBUG,maat_module,
"Foreign content file %s remove success.",
bag->filename);
}
free(bag->filename);
bag->filename=NULL;
break;

View File

@@ -501,7 +501,7 @@ redisReply *_wrap_redisCommand(redisContext *c, const char *format, ...);
int get_rm_key_list(redisContext *c, long long instance_version, long long desired_version, long long* new_version, struct serial_rule_t** list,int *update_type, void* logger, int cumulative_off);
int get_maat_redis_value(redisContext *c,struct serial_rule_t* rule_list,int rule_num,void* logger,int print_process);
int get_foreign_keys_by_prefix(redisContext *ctx, struct serial_rule_t* rule_list, int rule_num, const char* dir,void *logger);
void get_foreign_conts(redisContext *ctx, struct serial_rule_t* rule_list, int rule_num, void *logger);
void get_foreign_conts(redisContext *ctx, struct serial_rule_t* rule_list, int rule_num, int print_fn, void *logger);
void rewrite_table_line_with_foreign(struct serial_rule_t*p);

View File

@@ -91,6 +91,10 @@ void read_rule_from_redis(redisContext * ctx, long long desire_version, const ch
assert(update_type==CM_UPDATE_TYPE_FULL);
printf("MAAT Version: %lld, key number: %d\n", version, rule_num);
if(rule_num==0)
{
goto clean_up;
}
printf("Reading value: ");
ret=get_maat_redis_value(ctx,rule_list,rule_num,logger,1);
if(ret<0)
@@ -117,8 +121,8 @@ void read_rule_from_redis(redisContext * ctx, long long desire_version, const ch
ret=get_foreign_keys_by_prefix(ctx, rule_list, rule_num, foreign_files_dir, logger);
if(ret>0)
{
printf("Getting %d foreign content.\n", ret);
get_foreign_conts(ctx, rule_list, rule_num, logger);
printf("%d lines has foreign content.\n", ret);
get_foreign_conts(ctx, rule_list, rule_num, 1, logger);
}
snprintf(index_path,sizeof(index_path),"%s/full_config_index.%020lld",output_path,version);
index_fp=fopen(index_path,"w");
@@ -143,6 +147,7 @@ void read_rule_from_redis(redisContext * ctx, long long desire_version, const ch
table_fp=NULL;
set_file_rulenum(table_path,line_count, logger);
line_count=0;
printf("Written table %s\n",table_path);
}
snprintf(table_path,sizeof(table_path),"%s/%s.%020lld",output_path,rule_list[i].table_name,version);
set_file_rulenum(table_path, 0, logger);
@@ -152,7 +157,7 @@ void read_rule_from_redis(redisContext * ctx, long long desire_version, const ch
printf("Open %s failed.\n",table_path);
goto clean_up;
}
printf("Writing %s\n",table_path);
cur_table=rule_list[i].table_name;
}
fprintf(table_fp,"%s\tkey=%d\n",rule_list[i].table_line,rule_list[i].rule_id);
@@ -163,7 +168,7 @@ void read_rule_from_redis(redisContext * ctx, long long desire_version, const ch
fprintf(index_fp,"%s\t%d\t%s\n",cur_table,line_count,table_path);
set_file_rulenum(table_path,line_count, logger);
printf("Writing complete: %s\n",index_path);
printf("Written complete: %s\n",index_path);
clean_up:
for(i=0;i<rule_num;i++)
{