|
|
@@ -29,12 +29,31 @@ const char * ProcessTimeQuery = "\\Processor Information(_Total)\\% Processor Ti
|
|
|
|
|
|
#ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
|
|
|
#define HAND_SHAKE_URL "http://connectservice.paasst.cmbchina.cn/api/heartbeat/keep"
|
|
|
+#define CARDISSUER_STAND_MAIN_SERVER "rvctsst.cmbchina.cn 30033"
|
|
|
+#define CARDISSUER_STAND_BACKUP_SERVER ""
|
|
|
+#define CARDISSUER_STORE_MAIN_SERVER "rvctsst.cmbchina.cn 30033"
|
|
|
+#define CARDISSUER_STORE_BACKUP_SERVER ""
|
|
|
+
|
|
|
#elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
|
|
|
#define HAND_SHAKE_URL "http://connectservice.paasuat.cmbchina.cn/api/heartbeat/keep"
|
|
|
+#define CARDISSUER_STAND_MAIN_SERVER "rvctsuat.cmbchina.cn 30033"
|
|
|
+#define CARDISSUER_STAND_BACKUP_SERVER ""
|
|
|
+#define CARDISSUER_STORE_MAIN_SERVER "55.6.78.32 30033"
|
|
|
+#define CARDISSUER_STORE_BACKUP_SERVER ""
|
|
|
+
|
|
|
#elif defined(DEVOPS_ON_PRD)/*DevOps流水线编译,PRD环境*/
|
|
|
#define HAND_SHAKE_URL "https://connectservice.paas.cmbchina.cn/api/heartbeat/keep"
|
|
|
+#define CARDISSUER_STAND_MAIN_SERVER "rvcts.cmbchina.cn 30033"
|
|
|
+#define CARDISSUER_STAND_BACKUP_SERVER ""
|
|
|
+#define CARDISSUER_STORE_MAIN_SERVER "rvccardstore.cmbchina.cn 30033"
|
|
|
+#define CARDISSUER_STORE_BACKUP_SERVER ""
|
|
|
+
|
|
|
#else/*DevOps流水线编译,Dev环境&本地编译等非DevOps环境*/
|
|
|
#define HAND_SHAKE_URL "http://connectservice.paasst.cmbchina.cn/api/heartbeat/keep"
|
|
|
+#define CARDISSUER_STAND_MAIN_SERVER "rvctsst.cmbchina.cn 30033"
|
|
|
+#define CARDISSUER_STAND_BACKUP_SERVER ""
|
|
|
+#define CARDISSUER_STORE_MAIN_SERVER "rvctsst.cmbchina.cn 30033"
|
|
|
+#define CARDISSUER_STORE_BACKUP_SERVER ""
|
|
|
#endif
|
|
|
|
|
|
// End Performance Component [Josephus in 9:32:05 2016/4/23]
|
|
|
@@ -61,9 +80,11 @@ ErrorCodeEnum CHeartBeatFSM::OnInit()
|
|
|
|
|
|
m_isCardStore = !sysInfo.strMachineType.Compare("RVC.CardStore", true);
|
|
|
|
|
|
- ErrorCodeEnum rc = GetServerAddr(spConfig, m_isCardStore);
|
|
|
+ //ErrorCodeEnum rc = GetServerAddr(spConfig, m_isCardStore);
|
|
|
+ ErrorCodeEnum rc = ParseServerAddr(m_isCardStore);
|
|
|
+
|
|
|
if (Error_Succeed != rc) {
|
|
|
- LogWarn(Severity_Middle, Error_NotConfig, LOG_EVT_HEARTBEAT_LACK_CENSETTINGS, "找不到对应的配置,请检查集中配置是否存在!");
|
|
|
+ LogWarn(Severity_Middle, Error_NotConfig, LOG_EVT_HEARTBEAT_SERVER_CFG_FAIL, "读取连接虚机服务配置失败,请检查配置是否正确!");
|
|
|
return rc;
|
|
|
}
|
|
|
int tmpCrossUseJS = 0;
|
|
|
@@ -111,7 +132,7 @@ ErrorCodeEnum CHeartBeatFSM::OnInit()
|
|
|
//由于双活改造,改成固定ip,分行服务有处理
|
|
|
//m_servIP = "99.1.100.215";
|
|
|
m_dwServIP = inet_addr("99.1.100.215");
|
|
|
- //m_csServerIP = m_servIP;
|
|
|
+
|
|
|
|
|
|
CSimpleStringA csRunDiskName("C:\\");
|
|
|
Error = GetEntityBase()->GetFunction()->GetPath("Run", csRunDiskName);
|
|
|
@@ -126,8 +147,7 @@ ErrorCodeEnum CHeartBeatFSM::OnInit()
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Split rundisk file string(%s) failed", (LPCTSTR)csRunDiskName);
|
|
|
return Error_Unexpect;
|
|
|
}
|
|
|
- //CSimpleStringA temp="";
|
|
|
- //spConfig->ReadConfigValue(GetEntityBase()->GetEntityName(), "HandShakeUrl", temp);
|
|
|
+
|
|
|
m_strHandShakeUrl = HAND_SHAKE_URL;
|
|
|
//有心跳地址才启动心跳新线程
|
|
|
if (!m_strHandShakeUrl.IsNullOrEmpty()) {
|
|
|
@@ -251,7 +271,7 @@ void CHeartBeatFSM::s2_on_entry()
|
|
|
m_initTimes = 0;
|
|
|
m_testResult = Error_Succeed;
|
|
|
LogEvent(Severity_Middle, LOG_EVT_HEARTBEAT_CONNECTED, "Branch heartbeat service connected.");
|
|
|
- LogWarn(Severity_Low, Error_Unexpect, LOG_EVT_HEARTBEAT_CONNECTED, "Branch heartbeat service connected.");
|
|
|
+ //LogWarn(Severity_Low, Error_Unexpect, LOG_EVT_HEARTBEAT_CONNECTED, "Branch heartbeat service connected.");
|
|
|
}
|
|
|
void CHeartBeatFSM::s2_on_exit()
|
|
|
{
|
|
|
@@ -347,20 +367,22 @@ int CHeartBeatFSM::Starting()
|
|
|
|
|
|
if (!m_pHandShakeConn)
|
|
|
{
|
|
|
- //HeartBeatConnection* pHandShakeConn;
|
|
|
m_pHandShakeConn = new HeartBeatConnection(m_pEntity, this);
|
|
|
if (m_pHandShakeConn != NULL)
|
|
|
{
|
|
|
- bool bConn = false;
|
|
|
-
|
|
|
- if(m_isCardStore)
|
|
|
- {
|
|
|
- bConn = m_pHandShakeConn->Connect(m_servIP, m_port, 3);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- bConn = m_pHandShakeConn->ConnectFromCentralSetting();
|
|
|
- }
|
|
|
+ //bool bConn = false;
|
|
|
+
|
|
|
+ //if(m_isCardStore)
|
|
|
+ //{
|
|
|
+ // bConn = m_pHandShakeConn->Connect(m_servIP, m_port, 3);
|
|
|
+ //}
|
|
|
+ //else
|
|
|
+ //{
|
|
|
+ // bConn = m_pHandShakeConn->ConnectFromCentralSetting();
|
|
|
+ //}
|
|
|
+ CSimpleStringA connectedServ = "";
|
|
|
+ bool bConn = m_pHandShakeConn->ConnectFromAddress(m_servStr, m_servStrBArr, connectedServ);
|
|
|
+
|
|
|
if (!bConn)
|
|
|
{
|
|
|
m_pHandShakeConn->Close();
|
|
|
@@ -372,6 +394,17 @@ int CHeartBeatFSM::Starting()
|
|
|
LogWarn(Severity_Middle, Error_Unexpect, LOG_EVT_HEARTBEAT_UN_CONNECTED, "Branch heartbeat service unconnected.");
|
|
|
return 1;
|
|
|
}
|
|
|
+ else {
|
|
|
+ CSimpleStringA msg = "";
|
|
|
+ if (!connectedServ.IsNullOrEmpty()) {
|
|
|
+ msg = CSimpleStringA::Format("heartbeat service connected. server addr str = %s", connectedServ.GetData());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ msg = CSimpleStringA::Format("heartbeat service connected. server use last time addr str ");
|
|
|
+ }
|
|
|
+ LogWarn(Severity_Low, Error_Succeed, LOG_EVT_HEARTBEAT_CONNECTED, msg);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("HeartBeat connected.");
|
|
|
@@ -395,21 +428,6 @@ int CHeartBeatFSM::DoHandShake()
|
|
|
GetEntityBase()->GetFunction()->SetSysVar("HeartbeatState", "C");
|
|
|
m_pHandShakeConn->SendHandShake();
|
|
|
|
|
|
- if(m_pHandShakeConn->IsConnectionOK() && !m_bAlarmed)
|
|
|
- {
|
|
|
- regex reg("((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])");
|
|
|
- if(regex_match(m_servIP.GetData(), reg))
|
|
|
- {
|
|
|
- CSimpleStringA msg = CSimpleStringA::Format("Branch server IP: %s, backup ip: %s", m_servIP.GetData(), m_servIPB.GetData());
|
|
|
- LogWarn(Severity_Low, Error_Succeed, LOG_EVT_CONNECT_BRANCH, msg);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- CSimpleStringA msg = CSimpleStringA::Format("Center server url: %s", m_servIP.GetData());
|
|
|
- LogWarn(Severity_Low, Error_Succeed, LOG_EVT_CONNECT_CENTER, msg);
|
|
|
- }
|
|
|
- m_bAlarmed = true;
|
|
|
- }
|
|
|
Sleep(m_longConnInterval);//修改成可配置的时间间隔
|
|
|
//Sleep(20000);//oiltest
|
|
|
if (m_tmpTestFlag)
|
|
|
@@ -1394,77 +1412,129 @@ void HeartBeatConnection::PkgRcvProcCardActive(const CSmartPointer<IPackage> &pR
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-ErrorCodeEnum CHeartBeatFSM::GetServerAddr(CSmartPointer<IConfigInfo> &spConfig, bool isCardStore)
|
|
|
+//ErrorCodeEnum CHeartBeatFSM::GetServerAddr(CSmartPointer<IConfigInfo> &spConfig, bool isCardStore)
|
|
|
+//{
|
|
|
+// //卡库用新地址
|
|
|
+// if(isCardStore)
|
|
|
+// {
|
|
|
+// spConfig->ReadConfigValue(GetEntityBase()->GetEntityName(),"ServerNew",m_servStr);
|
|
|
+//
|
|
|
+// DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ServerNew=%s", m_servStr);
|
|
|
+// if (m_servStr.IsNullOrEmpty()) {
|
|
|
+// GetEntityBase()->GetFunction()->ShowFatalError("实体HeartBeat找不到对应的ServerNew配置,请检查集中配置");
|
|
|
+// return Error_Param;
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (!m_servStr.IsNullOrEmpty())
|
|
|
+// {
|
|
|
+// CAutoArray<CSimpleStringA> aaServ = m_servStr.Split(' ');
|
|
|
+// if (aaServ.GetCount() >= 2)
|
|
|
+// {
|
|
|
+// m_servIP = aaServ[0];
|
|
|
+// m_port = atoi(aaServ[1]);
|
|
|
+//
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
+// GetEntityBase()->GetFunction()->ShowFatalError("实体HeartBeat找不到对应的配置,请检查集中配置");
|
|
|
+// return Error_Param;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s,%d",(LPCTSTR)m_servIP,m_port);
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
+// spConfig->ReadConfigValue(GetEntityBase()->GetEntityName(),"Server",m_servStr);
|
|
|
+// spConfig->ReadConfigValue(GetEntityBase()->GetEntityName(),"Server_Backup",m_servStrB);
|
|
|
+// if (!m_servStr.IsNullOrEmpty())
|
|
|
+// {
|
|
|
+// CAutoArray<CSimpleStringA> aaServ = m_servStr.Split(' ');
|
|
|
+// if (aaServ.GetCount() >= 2)
|
|
|
+// {
|
|
|
+// m_servIP = aaServ[0];
|
|
|
+// m_port = atoi(aaServ[1]);
|
|
|
+//
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
+// GetEntityBase()->GetFunction()->ShowFatalError("实体HeartBeat找不到对应的配置,请检查集中配置");
|
|
|
+// return Error_Param;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if (!m_servStrB.IsNullOrEmpty())
|
|
|
+// {
|
|
|
+// CAutoArray<CSimpleStringA> aaServB = m_servStrB.Split(' ');
|
|
|
+// if (aaServB.GetCount() >= 2)
|
|
|
+// {
|
|
|
+// m_servIPB = aaServB[0];
|
|
|
+// m_portB = atoi(aaServB[1]);
|
|
|
+//
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
+// DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("no backup(%s).",(LPCSTR)m_servStrB);
|
|
|
+// m_servIPB = m_servIP;
|
|
|
+// m_portB = m_port;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s,%d;%s,%d",(LPCTSTR)m_servIP,m_port,(LPCTSTR)m_servIPB,m_portB);
|
|
|
+// }
|
|
|
+//
|
|
|
+// return Error_Succeed;
|
|
|
+//}
|
|
|
+
|
|
|
+ErrorCodeEnum CHeartBeatFSM::ParseServerAddr(bool isCardStore)
|
|
|
{
|
|
|
- //卡库用新地址
|
|
|
- if(isCardStore)
|
|
|
- {
|
|
|
- spConfig->ReadConfigValue(GetEntityBase()->GetEntityName(),"ServerNew",m_servStr);
|
|
|
+ //地址赋值
|
|
|
+ CSimpleStringA servStrBackup = "";
|
|
|
+ if (isCardStore){
|
|
|
+ m_servStr = CARDISSUER_STORE_MAIN_SERVER;
|
|
|
+ servStrBackup = CARDISSUER_STORE_BACKUP_SERVER;
|
|
|
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ServerNew=%s", m_servStr);
|
|
|
- if (m_servStr.IsNullOrEmpty()) {
|
|
|
- GetEntityBase()->GetFunction()->ShowFatalError("实体HeartBeat找不到对应的ServerNew配置,请检查集中配置");
|
|
|
+ }else {
|
|
|
+ m_servStr = CARDISSUER_STAND_MAIN_SERVER;
|
|
|
+ servStrBackup = CARDISSUER_STAND_BACKUP_SERVER;
|
|
|
+ }
|
|
|
+ m_servStrBArr = servStrBackup.Split('|');
|
|
|
+
|
|
|
+ if (m_servStr.IsNullOrEmpty()) {
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("实体HeartBeat配置的main_server值为空,请确认是否已设置正确,main_server=%s", m_servStr);
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ CAutoArray<CSimpleStringA> aaServ = m_servStr.Split(' ');
|
|
|
+ if (aaServ.GetCount() != 2){
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("实体HeartBeat配置的main_server值无法解析,请确认格式是否正确,main_server=%s", m_servStr.GetData());
|
|
|
return Error_Param;
|
|
|
}
|
|
|
-
|
|
|
- if (!m_servStr.IsNullOrEmpty())
|
|
|
- {
|
|
|
- CAutoArray<CSimpleStringA> aaServ = m_servStr.Split(' ');
|
|
|
- if (aaServ.GetCount() >= 2)
|
|
|
- {
|
|
|
- m_servIP = aaServ[0];
|
|
|
- m_port = atoi(aaServ[1]);
|
|
|
-
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- GetEntityBase()->GetFunction()->ShowFatalError("实体HeartBeat找不到对应的配置,请检查集中配置");
|
|
|
- return Error_Param;
|
|
|
- }
|
|
|
+ else {
|
|
|
+ CSimpleStringA servIP = aaServ[0];
|
|
|
+ int port = atoi(aaServ[1]);
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("main server: %s,%d", servIP.GetData(), port);
|
|
|
}
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s,%d",(LPCTSTR)m_servIP,m_port);
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- spConfig->ReadConfigValue(GetEntityBase()->GetEntityName(),"Server",m_servStr);
|
|
|
- spConfig->ReadConfigValue(GetEntityBase()->GetEntityName(),"Server_Backup",m_servStrB);
|
|
|
- if (!m_servStr.IsNullOrEmpty())
|
|
|
- {
|
|
|
- CAutoArray<CSimpleStringA> aaServ = m_servStr.Split(' ');
|
|
|
- if (aaServ.GetCount() >= 2)
|
|
|
- {
|
|
|
- m_servIP = aaServ[0];
|
|
|
- m_port = atoi(aaServ[1]);
|
|
|
+
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- GetEntityBase()->GetFunction()->ShowFatalError("实体HeartBeat找不到对应的配置,请检查集中配置");
|
|
|
+ for (int i = 0; i<m_servStrBArr.GetCount(); i++)
|
|
|
+ {
|
|
|
+ CSimpleStringA servStrB = m_servStrBArr[i];
|
|
|
+ if (!servStrB.IsNullOrEmpty()) {
|
|
|
+ CAutoArray<CSimpleStringA> aaServB = servStrB.Split(' ');
|
|
|
+ if (aaServB.GetCount() != 2) {
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("实体HeartBeat配置的Backup_server值无法解析,请确认格式是否正确,Backup_server=%s", servStrB.GetData());
|
|
|
return Error_Param;
|
|
|
}
|
|
|
- }
|
|
|
- if (!m_servStrB.IsNullOrEmpty())
|
|
|
- {
|
|
|
- CAutoArray<CSimpleStringA> aaServB = m_servStrB.Split(' ');
|
|
|
- if (aaServB.GetCount() >= 2)
|
|
|
- {
|
|
|
- m_servIPB = aaServB[0];
|
|
|
- m_portB = atoi(aaServB[1]);
|
|
|
-
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("no backup(%s).",(LPCSTR)m_servStrB);
|
|
|
- m_servIPB = m_servIP;
|
|
|
- m_portB = m_port;
|
|
|
+ else {
|
|
|
+ CSimpleStringA servIP = aaServB[0];
|
|
|
+ int port = atoi(aaServB[1]);
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("backup server: %s,%d", servIP.GetData(), port);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s,%d;%s,%d",(LPCTSTR)m_servIP,m_port,(LPCTSTR)m_servIPB,m_portB);
|
|
|
}
|
|
|
-
|
|
|
return Error_Succeed;
|
|
|
}
|
|
|
+
|
|
|
bool CHeartBeatFSM::CheckCRASessionOrToConnect()
|
|
|
{
|
|
|
if (m_pCRAClient != NULL && !m_pCRAClient->QuerySessionClosed())
|