增加错误处理

* 加载foreig content 失败
* 空配置时注册ex_data
* 非法格式的group rule
This commit is contained in:
zhengchao
2018-11-14 18:36:09 +08:00
parent febac3127c
commit 4064332387
4 changed files with 23 additions and 6 deletions

View File

@@ -1013,7 +1013,10 @@ int Maat_rule_get_ex_new_index(Maat_feather_t feather, const char* compile_table
p_table->ex_desc[idx].dup_func=dup_func;
p_table->ex_data_num++;
if(_feather->scanner!=NULL)
{
MESA_htable_iterate(_feather->scanner->compile_hash, rule_ex_data_new_cb, p_table->ex_desc+idx);
}
failed:
pthread_mutex_unlock(&(_feather->backgroud_update_mutex));
return idx;

View File

@@ -1532,14 +1532,14 @@ void _get_foregin_keys(struct serial_rule_t* p_rule, int* foreign_columns, int n
MESA_handle_runtime_log(logger,RLOG_LV_FATAL,maat_redis_monitor
, "Get %s,%d foreign keys failed: No %dth column."
, p_rule->table_name, p_rule->rule_id, foreign_columns[i]);
continue;
break;
}
if(0!=strncmp(p_foreign, foreign_source_prefix, strlen(foreign_source_prefix)))
{
MESA_handle_runtime_log(logger,RLOG_LV_FATAL,maat_redis_monitor
,"Get %s,%d foreign key failed: Invalid source prefix %s."
, p_rule->table_name, p_rule->rule_id, p_foreign);
continue;
break;
}
p_rule->f_keys[i].column=foreign_columns[i];
foreign_key_size=foreign_key_size-strlen(foreign_source_prefix);
@@ -1560,7 +1560,13 @@ void _get_foregin_keys(struct serial_rule_t* p_rule, int* foreign_columns, int n
p_rule->f_keys[i].is_existed=1;
}
}
return;
if(i!=n_foreign)
{
p_rule->n_foreign=0;
free(p_rule->f_keys);
p_rule->f_keys=NULL;
p_rule->with_error=1;
}
}
int get_foreign_keys_define(redisContext *ctx, struct serial_rule_t* rule_list, int rule_num, _Maat_feather_t* feather, const char* dir,void *logger)
{
@@ -1784,7 +1790,7 @@ void redis_monitor_traverse(long long version,redisContext *c,
MESA_handle_runtime_log(logger,RLOG_LV_INFO,maat_redis_monitor,"Start %s update: %lld->%lld (%d entries).",
update_type==CM_UPDATE_TYPE_INC?"INC":"FULL",version,new_version,rule_num);
for(i=0;i<rule_num;i++)
{
{
if(rule_list[i].table_line==NULL||rule_list[i].with_error==1)
{
continue;

View File

@@ -2346,7 +2346,14 @@ void update_group_rule(struct _Maat_table_info_t* table,const char* table_line,s
ret=sscanf(table_line,"%d\t%d\t%d",&(db_group_rule.group_id)
,&(db_group_rule.compile_id)
,&(db_group_rule.is_valid));
assert(ret==3);
if(ret!=3)
{
MESA_handle_runtime_log(logger,RLOG_LV_INFO,maat_module ,
"update error,invalid format of group table %s:%s"
,table->table_name[table->updating_name], table_line);
table->udpate_err_cnt++;
return;
}
if(db_group_rule.is_valid==FALSE)
{
del_group_rule(table, &db_group_rule,scanner,logger);

View File

@@ -492,6 +492,7 @@ struct serial_rule_t //rm= Redis Maat
enum MAAT_OPERATION op;//0: delete, 1: add.
long rule_id;
int label_id;
char with_error;
long long timeout; // absolute unix time.
char table_name[256];
char* table_line;