From d1fa47e3f1e8ddc4fdde3e4a1277e43ac05a0a62 Mon Sep 17 00:00:00 2001 From: lnk Date: Mon, 24 Feb 2025 16:45:42 +0800 Subject: [PATCH] finish ledger update code --- cfg_parse/cfg_parser.cpp | 27 +++++++++++--------------- json/save2json.cpp | 8 ++++---- mms/main.c | 10 ++-------- mms/mms_process.c | 12 +++++------- mms/mmscli_rpt.c | 9 +++------ mms/rdb_client.c | 41 +++++++++------------------------------- 6 files changed, 34 insertions(+), 73 deletions(-) diff --git a/cfg_parse/cfg_parser.cpp b/cfg_parse/cfg_parser.cpp index 1b641da..909c02a 100644 --- a/cfg_parse/cfg_parser.cpp +++ b/cfg_parse/cfg_parser.cpp @@ -11752,7 +11752,7 @@ void printLedgerinshell(const ied_usr_t& ied_usr, QIODevice* outputDevice) { // 打印所有设备信息或特定终端信息 void ledger(const char* terminal_id, QIODevice* outputDevice) { outputDevice->write("print ledger in shell"); - pthread_mutex_lock(&mtx); + pthread_mutex_lock(&mtx); std::cout << "ledger()hold lock !!!!!!!!!!!" << std::endl; bool found = false; ied_t* ied; ied_usr_t* ied_usr; @@ -11774,14 +11774,14 @@ void ledger(const char* terminal_id, QIODevice* outputDevice) { QByteArray msg = "该终端不存在: " + QByteArray(terminal_id ? terminal_id : "NULL") + "\n"; outputDevice->write(msg); // 输出到 QIODevice } - pthread_mutex_unlock(&mtx); + pthread_mutex_unlock(&mtx); std::cout << "ledger()free lock !!!!!!!!!!!" << std::endl; } //lnk20250210打印指定的变量名 void value_print(const char *variableName, QTcpSocket *clientSocket) { char buffer[256]; // 用于存储变量值的缓冲区 - pthread_mutex_lock(&mtx); + pthread_mutex_lock(&mtx); std::cout << "value_print hold lock !!!!!!!!!!!" << std::endl; // 打印变量值 if (strcmp(variableName, "frontindex") == 0) { @@ -11801,7 +11801,7 @@ void value_print(const char *variableName, QTcpSocket *clientSocket) { } else { clientSocket->write("Unknown variable name\n> "); } - pthread_mutex_unlock(&mtx); + pthread_mutex_unlock(&mtx); std::cout << "value_print free lock !!!!!!!!!!!" << std::endl; clientSocket->flush(); } @@ -13017,10 +13017,10 @@ void OnTimerThread::run() int telnet_count = 0; if (g_node_id == RECALL_HIS_DATA_BASE_NODE_ID) { //在测试连接时给台账加锁lnk20250114 - pthread_mutex_lock(&mtx); + pthread_mutex_lock(&mtx); std::cout << "testping hold lock !!!!!!!!!!!" << std::endl; init_ping_telnet(ip_count, telnet_count); Cout_account_information(); - pthread_mutex_unlock(&mtx);//解锁 + pthread_mutex_unlock(&mtx); std::cout << "testping free lock !!!!!!!!!!!" << std::endl; } //单联模式 @@ -13073,12 +13073,9 @@ void OnTimerThread::run() pgflag = 1; }*/ - //调试 - printf("check error10 !!!!!!!!!!!!!!\n"); - //日志记录 if (mp_num_hour != localTime.tm_hour) { - pthread_mutex_lock(&mtx);//lnk20250114 + pthread_mutex_lock(&mtx); std::cout << "ontime hold lock !!!!!!!!!!!" << std::endl; std::string mp_num_str = ""; mp_num_str.append("connected device count:"); mp_num_str.append(QString::number(FRONT_MP_NUM).toStdString());//记录连接的检测点数 @@ -13087,10 +13084,8 @@ void OnTimerThread::run() add_comm_log(const_cast(mp_num_str.c_str())); mp_num_hour = localTime.tm_hour; - pthread_mutex_unlock(&mtx);//解锁 + pthread_mutex_unlock(&mtx); std::cout << "ontime free lock !!!!!!!!!!!" << std::endl; } - //调试 - printf("check error11 !!!!!!!!!!!!!!\n"); } //不使用的代码lnk20241206 @@ -13852,9 +13847,9 @@ void WebhttpThread::run() std::cout << "recall data cfg:" << data <n_clients; ++i) { + for (int i = 0; (total_messages != 0 && g_front_seg_index == 1 && g_node_id == 100) && i < g_node->n_clients; ++i) { ied = (ied_t*)g_node->clients[i]; if(ied != NULL){ diff --git a/json/save2json.cpp b/json/save2json.cpp index af7af6e..e037837 100644 --- a/json/save2json.cpp +++ b/json/save2json.cpp @@ -1702,12 +1702,12 @@ int myMessageCallbackrtdata(CPushConsumer* consumer, CMessageExt* msg) } //mq处理实时数据指令查询台账时添加锁 - pthread_mutex_lock(&mtx); + pthread_mutex_lock(&mtx); std::cout << "update ledger xml hold lock !!!!!!!!!!!" << std::endl; int dev_index = find_dev_index_from_dev_id(devid); int mp_index = find_mp_index_from_mp_id(line); - pthread_mutex_unlock(&mtx); + pthread_mutex_unlock(&mtx); std::cout << "update ledger xml free lock !!!!!!!!!!!" << std::endl; if(dev_index == 0 || mp_index == 0){ std::cerr << "dev index or mp index is 0" << std::endl; @@ -1827,9 +1827,9 @@ int myMessageCallbackrecall(CPushConsumer* consumer, CMessageExt* msg) std::cout << "extractDataJson:"<< result.c_str() <= 30 && g_onlyIP[0] == 0 && g_node->n_clients>10) {//30分钟连接数量过低且不是单连且台账大于十个终端 MVL_LOG_ACSE0("MYLOG: g_front_num_count>=20, so exit to restart "); - pthread_mutex_unlock(&mtx); - apr_sleep(apr_time_from_sec(10)); exit(-1039); } - pthread_mutex_unlock(&mtx); - //调试 - printf("check error13 !!!!!!!!!!!!!!\n"); + pthread_mutex_unlock(&mtx); printf("main thread free lock !!!!!!!!!!!"); } diff --git a/mms/mms_process.c b/mms/mms_process.c index 048eee7..d49e795 100644 --- a/mms/mms_process.c +++ b/mms/mms_process.c @@ -824,9 +824,9 @@ void check_3s_config() last_check_3s_config_time = now; //记录本次运行时间 while (APR_SUCCESS==parse_3s_xml(&trigger_3s_xml)){ //处理3秒文件 //处理实时触发加台账锁lnk20250114 - pthread_mutex_lock(&mtx); + //pthread_mutex_lock(&mtx); printf("3s hold lock !!!!!!!!!!!"); process_3s_config(&trigger_3s_xml); //根据文件处理数据 - pthread_mutex_unlock(&mtx); + pthread_mutex_unlock(&mtx); printf("3s free lock !!!!!!!!!!!"); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1270,9 +1270,9 @@ void check_ledger_update()//lnk20250113 print_trigger_update_xml(trigger_ledger_update_xml); //处理台账更新加台账锁lnk20250114 - pthread_mutex_lock(&mtx); + //pthread_mutex_lock(&mtx); printf("ledgerupdate hold lock !!!!!!!!!!!"); process_ledger_update(trigger_ledger_update_xml); //台账更新 - pthread_mutex_unlock(&mtx); + //pthread_mutex_unlock(&mtx); printf("ledgerupdate free lock !!!!!!!!!!!"); } @@ -1571,8 +1571,6 @@ void CheckNextNotConnectedChannel() //} } - printf("check error94 !!!!!!!!!!!!!!\n"); - printf("check error %s !!!!!!!!!!!!!!\n",((ied_usr_t*)chnl_usr->chnl->ied->usr_ext)->terminal_id); if(chnl_usr->m_state == CHANNEL_CONNECTING)//正在连接 @@ -1761,7 +1759,7 @@ void CheckNextNotConnectedChannel() echo_warn2( "CHANNEL_DISCONNECTING waiting ... %s,NetInfo= %x ",chnl_usr->ip_str,chnl_usr->net_info); if ( (sGetMsTime() - chnl_usr->m_StartDisconnectingTime) > 30*1000 ) // //wait 30 secs ????? - { printf("check error71 !!!!!!!!!!!!!!\n"); + { //cout<GetIP()<<"CHANNEL_DISCONNECTING reqCtrl->done == SD_false but time over 180 secs, close channel !!!"<done未完成,but time over 180 secs, close channel IP %s,NetInfo= %x ",chnl_usr->ip_str,chnl_usr->net_info); mvl_free_req_ctrl(chnl_usr->m_reqCtrl); diff --git a/mms/mmscli_rpt.c b/mms/mmscli_rpt.c index 681b63c..2cabf85 100644 --- a/mms/mmscli_rpt.c +++ b/mms/mmscli_rpt.c @@ -2153,14 +2153,11 @@ ST_RET u_iec_rpt_ind(MVL_COMM_EVENT* event) /* Perform 3rd decode (everything). */ mvl_info_data_to_local(event, va_num, info_va); - //调试 - printf("check error14 !!!!!!!!!!!!!!\n"); //报告处理加锁lnk20250114 - pthread_mutex_lock(&mtx); + //pthread_mutex_lock(&mtx); printf("rpt hold lock !!!!!!!!!!!"); u_iec_rpt_ind_data(info_va, OptFldsData, InclusionData, rcb_info, va_total, event->net_info); - pthread_mutex_unlock(&mtx); - //调试 - printf("check error15 !!!!!!!!!!!!!!\n"); + //pthread_mutex_unlock(&mtx); printf("rpt free lock !!!!!!!!!!!"); + } CLEANUP: diff --git a/mms/rdb_client.c b/mms/rdb_client.c index 69f25f4..dc2c858 100644 --- a/mms/rdb_client.c +++ b/mms/rdb_client.c @@ -401,46 +401,29 @@ static void* APR_THREAD_FUNC rtdb_worker(apr_thread_t* thd, void* data) /* Maintenance the clients request */ while (1) { - /*测试用发送rocketmq消息 lnk10-10*/ - //producer_send0(); - - //调试用 - printf("check error4 !!!!!!!!!!!!!!\n"); + pthread_mutex_lock(&mtx); printf("work hold lock !!!!!!!!!!!"); + + //调试用 + printf("check error4 !!!!!!!!!!!!!!\n"); doCommService();//处理61850消息 - //调试用 - printf("check error5 !!!!!!!!!!!!!!\n"); - check_3s_config();//3秒数据进程读取3秒触发 - //调试用 - printf("check error6 !!!!!!!!!!!!!!\n"); - - pthread_mutex_lock(&mtx); + //pthread_mutex_lock(&mtx); printf("check connect hold lock !!!!!!!!!!!"); CheckNextNotConnectedChannel();//所有长连接进程判断连接状态 - pthread_mutex_unlock(&mtx); + //pthread_mutex_unlock(&mtx); printf("check connect free lock !!!!!!!!!!!"); - //调试用 - printf("check error7 !!!!!!!!!!!!!!\n"); - - pthread_mutex_lock(&mtx); + //pthread_mutex_lock(&mtx); printf("check prt hold lock !!!!!!!!!!!"); CheckAllConnectedChannel();//触发报告、日志补召、发送心跳 - pthread_mutex_unlock(&mtx); - - //调试用 - printf("check error8 !!!!!!!!!!!!!!\n"); + //pthread_mutex_unlock(&mtx); printf("check prt free lock !!!!!!!!!!!"); //check_recall_config();//补召进程读取补召消息 create_recall_xml();//生成待补招xml文件 - //调试用 - printf("check error9 !!!!!!!!!!!!!!\n"); - check_ledger_update();//lnk20250113读取台账更新,触发台账更新 - //调试用 - printf("check error3 !!!!!!!!!!!!!!\n"); + pthread_mutex_unlock(&mtx); printf("work free lock !!!!!!!!!!!"); //Check_Recall_Config(); /*if ((g_protect_file) && (g_pt61850app->initNum>=MIN_INIT_NUM) ) { @@ -449,14 +432,8 @@ static void* APR_THREAD_FUNC rtdb_worker(apr_thread_t* thd, void* data) //clear_old_comtrade_files(); check_disk_quota();//判断磁盘空间 - //调试用 - printf("check error1 !!!!!!!!!!!!!!\n"); - apr_pool_clear(g_pt61850app->tmp_pool);//清除临时缓存 - //调试用 - printf("check error2 !!!!!!!!!!!!!!\n"); - g_dead_lock_counter = 0; g_thread_blocked_times = 0;//监控线程 }