mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 12:43:16 -04:00
226ed47e39
fix(ani): replace waitForCompletion with awaitSync in ServiceExtensionAbility Created-by: zhuheng_z Commit-by: zh Merged-by: openharmony_ci Description: **IssueNo**: https://gitcode.com/openharmony/xts_acts/issues/27898 **Description**: ArkVM 正在从有栈协程迁移到无栈协程,`waitForCompletion()` 在 stackless 模式下会死锁,需要替换。 本 PR 将 `@ohos.app.ability.ServiceExtensionAbility.ets` 中的 `callPromise` 方法的 `waitForCompletion(async () => { return await p })` 替换为 `p.awaitSync()`。 ArkVM is migrating from stackful to stackless coroutines. `waitForCompletion()` deadlocks in stackless mode. This PR replaces `waitForCompletion(async () => { return await p })` with `p.awaitSync()` in the `callPromise` method of `@ohos.app.ability.ServiceExtensionAbility.ets`. 改动文件 / Changed file: - `frameworks/ets/ets/@ohos.app.ability.ServiceExtensionAbility.ets` — `callPromise` 方法(被 native `ets_service_extension.cpp` 通过 ANI `Class_FindMethod("callPromise")` 调用) **稳定性自检:** | 自检项 | 自检结果 | | --- | --- | | 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | 不涉及 | | 成员变量进行赋值或创建需要排查并发 | 不涉及 | | 其余项 | 不涉及,仅替换 ETS 层同步等待原语,不改变控制流和并发语义 | **安全编码自检:** | 自检项 | 自检结果 | | --- | --- | | 全部项 | 不涉及,本次改动仅在 ETS 层替换 waitForCompletion 为 awaitSync,不涉及 C++ 代码 | **TDD Result**: 不涉及,仅替换 ETS 层同步等待原语 **XTS Result**: 不涉及 ### 是否已执行L0用例 - [x] 不涉及。仅替换 ETS 层 `waitForCompletion` 为 `awaitSync`,语义等价,不改变 ANI 调用接口 See merge request: openharmony/ability_ability_runtime!18964