合并受阻
感谢提交 Pull Requests!
Thanks for submitting a pull request.


start build


首次触发
门禁构建开始,包含静态检查、代码编译【rntpc_br_rnoh0.82编译】,预计在60分钟内完成,门禁结果会同步发送到注册邮箱。您可以通过如下链接跟踪门禁进展:http://dcp.openharmony.cn/workbench/cicd/detail/6a757d4c64650f998b99f66d/runlist


【AI-Review】【一般】【基础代码问题】【代码逻辑错误】executeSqlBatchDatabase 同样存在 rdbStore 为空时回调缺失导致事务队列挂起
● 问题: 本 PR 在 attachDatabase 第350-352行为 rdbStore == undefined 补充了 error 回调,修复了回调不触发导致 JS 侧挂起的问题。但同文件 executeSqlBatchDatabase(第218-222行)仍保留相同缺陷:rdbStore == undefined 时仅 Logger.debug 后 return,既不调用 success 也不调用 error。触发路径:JS 侧 SQLitePluginTransaction.run(lib/sqlite.core.js:662)通过 plugin.exec("backgroundExecuteSqlBatch", ..., mysuccess, myerror) 调用本方法,事务完成依赖 mysuccess(由 success(callvalue) 触发)将 waiting 计数归零并置 txLocks[dbname].inProgress=false;若原生侧 success 与 error 均未调用,waiting 永不归零,inProgress 永久为 true,该 dbname 后续所有事务被阻塞。
● 影响: 一般。在 deleteDatabase(第190行 relationalStore.deleteRdbStore().then 中执行 rdbMap.delete)与已派发但未完成的 backgroundExecuteSqlBatch 产生时序竞争,或 JS openDBs 与原生 rdbMap 状态不一致时,会触发该数据库事务队列冻屏,症状与本次 attach 修复的挂起问题同源。
● 建议: 参照 attachDatabase 的修复方式,在第218行分支补充 error 回调后返回:
if (rdbStore == undefined) {
error({ "code": -1, "message": database ${dbname} is not open });
return;
}


stop build


上次构建已停止


fix:attach 成功后没调 success 回调