From d58923fd218bed6f4f5a81ab0060c5b107459063 Mon Sep 17 00:00:00 2001 From: lnk Date: Thu, 24 Jul 2025 16:14:00 +0800 Subject: [PATCH] fix recall fail crash --- cfg_parse/cfg_parser.cpp | 4 ++-- mms/mms_process.c | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/cfg_parse/cfg_parser.cpp b/cfg_parse/cfg_parser.cpp index a3152cd..5c46804 100644 --- a/cfg_parse/cfg_parser.cpp +++ b/cfg_parse/cfg_parser.cpp @@ -2347,7 +2347,7 @@ void process_recall_config(recall_xml_t* recall_xml) LD_info->autorecall[j]->need_voltage = recall[j].need_voltage; } - LD_info->autorecallflag = 0; + LD_info->autorecallflag = 0;//这个监测点刚读取到补招文件,重置正在补招标志 } @@ -6121,7 +6121,7 @@ void rocketmq_test_300(int mpnum,int front_index,int type) { // 循环发送 300 条消息 if(type == 0){ std::cout << " use ledger send msg " << std::endl; - for (int i = 0; (total_messages > 0 && g_front_seg_index == 1 && g_node_id == 100) && i < g_node->n_clients; ++i) { + for (int i = 0; (total_messages > 0 && g_node_id == 100) && i < g_node->n_clients; ++i) {//台账模拟不限制进程号 ied = (ied_t*)g_node->clients[i]; if(ied != NULL){ diff --git a/mms/mms_process.c b/mms/mms_process.c index bc3fd63..3e0f82a 100644 --- a/mms/mms_process.c +++ b/mms/mms_process.c @@ -481,12 +481,13 @@ void ChannelCheckIECLogs(chnl_usr_t *chnl_usr) Check_Recall_Config(LD_info->mp_id);//尝试获取xml结构 + //补招数量不为0且不是正在补招 if (LD_info->autorecallcount != 0 && LD_info->autorecallflag != 1) { int i; int failed_count = 0; for (i = 0; i < LD_info->autorecallcount; i++) { - LD_info->autorecallflag = 1; + LD_info->autorecallflag = 1;//正在补招 //当前不区分稳态和暂态lnk20241030,如果做区分修改:Check_Recall_Config从xml文件获取数据后,赋值给了LD_info loginfo->need_steady = LD_info->autorecall[i]->need_steady; loginfo->need_voltage = LD_info->autorecall[i]->need_voltage; @@ -505,7 +506,7 @@ void ChannelCheckIECLogs(chnl_usr_t *chnl_usr) LD_info->ied->id, LD_info->cpuno, LD_info->LD_name, loginfo->logName, chnl_usr->ip_str, chnl_usr->chnl_id); //mq日志 - DIY_WARNLOG(full_key_m_c,"【WARN】监测点:%s - id:%s开始补招数据", LD_info->name,LD_info->mp_id); + //DIY_WARNLOG(full_key_m_c,"【WARN】监测点:%s - id:%s开始补招数据", LD_info->name,LD_info->mp_id); ret = mms_jread(loginfo, chnl_usr->net_info, loginfo->LD_info->LD_name, loginfo->logName, loginfo->start_time, loginfo->end_time, g_pt61850app->mmsOpTimeout, chnl_usr->ip_str); @@ -514,7 +515,7 @@ void ChannelCheckIECLogs(chnl_usr_t *chnl_usr) LD_info->ied->id, LD_info->cpuno, LD_info->LD_name, loginfo->logName, chnl_usr->ip_str, chnl_usr->chnl_id); //mq日志 - DIY_ERRORLOG(full_key_m_c,"【ERROR】监测点:%s - id:%s补招数据失败", LD_info->name,LD_info->mp_id); + DIY_ERRORLOG(full_key_m_c,"【ERROR】监测点:%s - id:%s补招数据失败 - 失败时间点:%lld 至 %lld", LD_info->name,LD_info->mp_id,loginfo->start_time,loginfo->end_time); failed_count++; } @@ -534,9 +535,10 @@ void ChannelCheckIECLogs(chnl_usr_t *chnl_usr) printf("end mms_jread................................\n"); } - if (failed_count==0) {//成功 + //不管是否成功,这个补招文件必须删除,可能出现一直失败,循环读取文件和循环补招导致程序崩溃202050724lnk + //if (failed_count==0) {//成功 Delete_recall_Xml(LD_info->mp_id); - } + //} } } @@ -1371,7 +1373,7 @@ void Check_Recall_Config(char *id) //检查补招配置文件Recall.xml recall_xml_t recall_xml; memset((char*)&recall_xml, 0, sizeof(recall_xml_t)); - parse_recall_xml(&recall_xml,id); //解析补招文件 + parse_recall_xml(&recall_xml,id); //解析补招文件,目录下所有属于这个监测点的文件都读取 process_recall_config(&recall_xml); //解析的补招数据赋值到全局变量 } }