From bcd7b2b3f74fc6da38bb983e1ecebfde0623586a Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 20 Nov 2024 06:16:57 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=AD=E9=93=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chensihan --- .../native/backup_ext/src/ext_backup_js.cpp | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/frameworks/native/backup_ext/src/ext_backup_js.cpp b/frameworks/native/backup_ext/src/ext_backup_js.cpp index fee000ebf..4d33dbbf5 100644 --- a/frameworks/native/backup_ext/src/ext_backup_js.cpp +++ b/frameworks/native/backup_ext/src/ext_backup_js.cpp @@ -48,7 +48,7 @@ namespace OHOS::FileManagement::Backup { using namespace std; constexpr size_t ARGC_ONE = 1; static std::mutex g_extBackupValidLock; -static bool g_isExtBackupValid = true; +static int32_t g_extBackupCount = 0; static string GetSrcPath(const AppExecFwk::AbilityInfo &info) { @@ -107,8 +107,8 @@ static napi_status DealNapiException(napi_env env, napi_value &exception, std::s static napi_value PromiseCallback(napi_env env, napi_callback_info info) { std::lock_guard lock(g_extBackupValidLock); - if (!g_isExtBackupValid) { - HILOGE("ExtBackup is invalid"); + if (g_extBackupCount <= 0) { + HILOGE("ExtBackup is invalid, count=%{public}d", g_extBackupCount); return nullptr; } HILOGI("Promise callback."); @@ -149,8 +149,8 @@ static napi_value PromiseCatchCallback(napi_env env, napi_callback_info info) return nullptr; } std::lock_guard lock(g_extBackupValidLock); - if (!g_isExtBackupValid) { - HILOGE("ExtBackup is invalid"); + if (g_extBackupCount <= 0) { + HILOGE("ExtBackup is invalid, count=%{public}d", g_extBackupCount); data = nullptr; return nullptr; } @@ -163,8 +163,8 @@ static napi_value PromiseCatchCallback(napi_env env, napi_callback_info info) static napi_value PromiseCallbackEx(napi_env env, napi_callback_info info) { std::lock_guard lock(g_extBackupValidLock); - if (!g_isExtBackupValid) { - HILOGE("ExtBackup is invalid"); + if (g_extBackupCount <= 0) { + HILOGE("ExtBackup is invalid, count=%{public}d", g_extBackupCount); return nullptr; } HILOGI("PromiseEx callback."); @@ -205,8 +205,8 @@ static napi_value PromiseCatchCallbackEx(napi_env env, napi_callback_info info) return nullptr; } std::lock_guard lock(g_extBackupValidLock); - if (!g_isExtBackupValid) { - HILOGE("ExtBackup is invalid"); + if (g_extBackupCount <= 0) { + HILOGE("ExtBackup is invalid, count=%{public}d", g_extBackupCount); data = nullptr; return nullptr; } @@ -449,16 +449,17 @@ napi_value AttachBackupExtensionContext(napi_env env, void *value, void *) ExtBackupJs::ExtBackupJs(AbilityRuntime::JsRuntime &jsRuntime) : jsRuntime_(jsRuntime) { - g_isExtBackupValid = true; - HILOGI("ExtBackupJs::ExtBackupJs."); + std::lock_guard lock(g_extBackupValidLock); + g_extBackupCount += 1; + HILOGI("ExtBackupJs::ExtBackupJs, count=%{public}d.", g_extBackupCount); } ExtBackupJs::~ExtBackupJs() { jsRuntime_.FreeNativeReference(std::move(jsObj_)); std::lock_guard lock(g_extBackupValidLock); - g_isExtBackupValid = false; - HILOGI("ExtBackupJs::~ExtBackupJs."); + g_extBackupCount -= 1; + HILOGI("ExtBackupJs::~ExtBackupJs, count=%{public}d.", g_extBackupCount); } void ExtBackupJs::ExportJsContext(void) -- Gitee From 5116cb7fae83ed8cae1accc1166a9a59fad26b3f Mon Sep 17 00:00:00 2001 From: chensihan Date: Wed, 20 Nov 2024 06:19:01 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=AD=E9=93=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chensihan --- services/backup_sa/src/module_ipc/svc_backup_connection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/backup_sa/src/module_ipc/svc_backup_connection.cpp b/services/backup_sa/src/module_ipc/svc_backup_connection.cpp index 048d1f3aa..8fc298baa 100644 --- a/services/backup_sa/src/module_ipc/svc_backup_connection.cpp +++ b/services/backup_sa/src/module_ipc/svc_backup_connection.cpp @@ -125,7 +125,7 @@ ErrCode SvcBackupConnection::DisconnectBackupExtAbility() HILOGE("Dis connect failed"); return false; } - return extPtr->GetBackupExtProxy() == nullptr; + return extPtr->isConnected_.load() == false; }; if (condition_.wait_for(lock, std::chrono::seconds(WAIT_TIME), callback)) { HILOGI("Wait until the connection ends"); -- Gitee