| fix(aot): route destroy callback logs to model context
Co-authored-by: yrz1027<yangruizhi5@huawei.com>
# message auto-generated for no-merge-commit merge:
!375 merge fix/sk-resource-destroy-log-context into master
fix(aot): route destroy callback logs to model context
Created-by: yrz1027
Commit-by: yrz1027
Merged-by: cann-robot
Description: # Pull Request
## 描述
修复 SuperKernel 资源销毁回调日志可能写入当前线程正在处理的 modelRI 日志文件的问题,并收敛资源分配前的回调注册语义。
本次变更包含:
- 在 OnModelDestroy 中新增局部 RAII 日志上下文,进入回调时临时设置当前线程 logger modelRI 为被销毁的 modelRI,并切回 default handle,使 SK_LOG* 按现有日志路由写入该 modelRI 对应的 super_kernel.log。
- RAII 析构时恢复回调线程原有的 modelRI 和 handle,避免影响同线程后续日志;FileHandleManager 的当前 handle 是 thread-local,不影响其他线程。
- 将销毁回调注册接口收敛为 CallbackRegister,并在 aclskOptimize 开始阶段提前注册。
- AllocForModel 不再兜底注册 callback,只强校验当前 model 是否已经注册销毁回调;未注册时直接返回失败并打印错误日志,避免掩盖异常生命周期路径。
- 对 callback 已注册的幂等路径补充日志,便于定位重复注册场景。
- 同步更新 SkResourceManager 和 SkScopePostprocess 相关 UT,显式模拟入口注册语义。
影响范围:仅影响 AOT SuperKernel 资源销毁回调注册、资源分配前置校验和销毁回调日志归属,不改变资源释放语义,也不改变 callback userData 仍传递 modelRI 的设计。
## 变更类型
请选择本次引入的变更类型:
<!-- [x] 表示选中 -->
- [x] 🐛 Bug 修复
- [ ] ✨ 新功能
- [ ] 💄 代码风格更新(格式化,局部变量)
- [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动)
- [ ] 📦 构建过程或辅助工具的变动
- [ ] 📝 文档内容更新
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 -->
无
## 如何测试
描述测试此变更的步骤和前提条件:
1. 执行 bash build.sh -u --impl=cpp --no-autofuse -c
2. 结果:715 tests from 32 test suites 全部通过
## 核对清单
<!-- [x] 表示选中 -->
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [ ] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签(如:feat:, fix:)
- [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等
## 其他信息
- Base: master
- Source branch: fix/sk-resource-destroy-log-context
- Commit: d45d539 fix(aot): route destroy callback logs to model context
See merge request: cann/graph-autofusion!375 | 21 天前 |