Przeglądaj źródła

Z991239-5709 #comment dep文件的拷贝放到本次版本升级的关键路径,不成功则排查原因,由升级监护兜底

oilyang 11 miesięcy temu
rodzic
commit
efc7481427

+ 27 - 0
Module/mod_vtmloader/VtmLoaderFSM.cpp

@@ -219,6 +219,7 @@ CVtmLoaderFSM::CVtmLoaderFSM()
 	m_terminalNoFromWeb = m_verShowMsg = "";
 	m_iNoCheckMachineModel = 0;
 	m_bSIPPhoneStartFail = false;
+	m_eDepCopyStage = DepDirInitCopy_NoNeed;
 }
 
 CVtmLoaderFSM::~CVtmLoaderFSM()
@@ -259,6 +260,7 @@ void CVtmLoaderFSM::s0_on_entry()
 	{
 		if (CheckIfNeedCopyDepFiles())
 		{
+			m_eDepCopyStage = DepDirInitCopy_Copying;
 			CopyDepFilesToNewDepPathTask* pCopyTask = new CopyDepFilesToNewDepPathTask(this);
 			GetEntityBase()->GetFunction()->PostThreadPoolTask(pCopyTask);
 		}
@@ -972,6 +974,25 @@ int CVtmLoaderFSM::NetWorkCheckAndGetSetting()
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)(CSimpleStringA::Format("root.ini不存在(%s),Set TerminalStage N ", csTmpRootIni.GetData()).GetData());
 		GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "N");
 	}
+	//oilyang@20241017 to check if have copied dep directory
+	while (true)
+	{
+		if (m_eDepCopyStage == DepDirInitCopy_NoNeed || m_eDepCopyStage == DepDirInitCopy_CopySuc)
+		{
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("no need or have done dep copy, DepCopyStage:%d", m_eDepCopyStage);
+			break;
+		}
+		else if (m_eDepCopyStage == DepDirInitCopy_Copying)
+		{
+			Sleep(1000);
+			continue;
+		}
+		else
+		{
+			LogWarn(Severity_High, Error_Unexpect, VtmLoader_DepDirCopyFailed, "厂商适配器Dep文件拷贝失败,请联系分行IT排查是否安全软件干扰文件拷贝");
+			Sleep(60000);
+		}
+	}
 	return EntityLoad();
 
 }
@@ -2987,6 +3008,7 @@ void CVtmLoaderFSM::CopyDepFilesToNewDepPath()
 	if (eErr != Error_Succeed)
 	{
 		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("get path of Run failed:%s", SpStrError(eErr));
+		m_eDepCopyStage = DepDirInitCopy_CopyFailed;
 		return;
 	}
 	csPath = csRun + SPLIT_SLASH_STR + "dep" + SPLIT_SLASH_STR + "0.0.0.1";
@@ -2998,6 +3020,7 @@ void CVtmLoaderFSM::CopyDepFilesToNewDepPath()
 #else
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Create default dep version dir fail: %d", errno);
 #endif	
+		m_eDepCopyStage = DepDirInitCopy_CopyFailed;
 		return;
 	}
 
@@ -3005,6 +3028,7 @@ void CVtmLoaderFSM::CopyDepFilesToNewDepPath()
 	if (eErr != Error_Succeed)
 	{
 		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("get path of DepBak failed:%s", SpStrError(eErr));
+		m_eDepCopyStage = DepDirInitCopy_CopyFailed;
 		return;
 	}
 	//xcopy C:\sourceDir C:\destDir /E /I /Y
@@ -3027,5 +3051,8 @@ void CVtmLoaderFSM::CopyDepFilesToNewDepPath()
 		CSimpleStringA csVersion("0.0.0.1");
 		eErr = GetEntityBase()->GetFunction()->GetPrivilegeFunction()->RewriteDepVersion(csVersion, true);
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[RewriteDepVersion] %s,%s", SpStrError(eErr), csVersion.GetData());
+		m_eDepCopyStage = DepDirInitCopy_CopySuc;
 	}
+	else
+		m_eDepCopyStage = DepDirInitCopy_CopyFailed;
 }

+ 8 - 0
Module/mod_vtmloader/VtmLoaderFSM.h

@@ -54,6 +54,13 @@ enum HttpConnResult
 	HttpConnResult_OK = 1,
 	HttpConnResult_Failed
 };
+enum DepDirInitCopyStage
+{
+	DepDirInitCopy_NoNeed = 0,
+	DepDirInitCopy_Copying,
+	DepDirInitCopy_CopyFailed,
+	DepDirInitCopy_CopySuc
+};
 struct EntityLoadInfo
 {
 	int initSn;
@@ -185,6 +192,7 @@ private:
 	map<CSimpleStringA, EntityLoadInfo> m_operatingOpt;
 
 	bool m_bMediaControllerOK, m_bSIPPhoneStartFail;
+	DepDirInitCopyStage m_eDepCopyStage;
 
 	bool RefreshDeviceConfig(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
 	void CheckDeviceBaseEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx, WORD wEntityID);

+ 2 - 1
Module/mod_vtmloader/VtmLoader_UserCode.h

@@ -25,4 +25,5 @@ const int VtmLoader_CheckAudio_CfgEmpty = 0x10f00218;
 const int VtmLoader_CheckAudio_CfgBothError = 0x10f00219;
 const int VtmLoader_CheckAudio_CfgPickupError = 0x10f0021a;
 const int VtmLoader_CheckAudio_CfgHandFreeError = 0x10f0021b;
-const int VtmLoader_SIPPhoneEntityLoad_Cost = 0x10f0021c;
+const int VtmLoader_SIPPhoneEntityLoad_Cost = 0x10f0021c;
+const int VtmLoader_DepDirCopyFailed = 0x10f0021d;