父节点
d0429cbf6b
当前提交
7118f4f7ff
@ -0,0 +1,76 @@
|
|||||||
|
---
|
||||||
|
date: 2026-05-08
|
||||||
|
type: backend-internal
|
||||||
|
module: hl-user-service/test, hl-common-redis/cache
|
||||||
|
priority: low
|
||||||
|
notify: []
|
||||||
|
status: tested-passed
|
||||||
|
restart_service: hl-common-redis (随 mp-service / user-service / 任何引用方升级)
|
||||||
|
gitea_pr: [1879, 1881]
|
||||||
|
gitea_issue: [1853]
|
||||||
|
gitea_issue_open: [1860, 1880]
|
||||||
|
---
|
||||||
|
|
||||||
|
# 测试 stub 修复 + 缓存反向索引诊断日志(前端无感)
|
||||||
|
|
||||||
|
两个内部改动汇总, **不影响任何接口字段/路径/行为, 前端无需配合**。
|
||||||
|
|
||||||
|
## PR #1879 - InternalUserControllerTest stub 切到 default 方法路径 (Closes #1853)
|
||||||
|
|
||||||
|
### 现象 / 根因
|
||||||
|
PR #1814 把 `InternalUserController.getAdminsByRoleKey` 用到的 3 个 mapper 方法改为 default 方法实现:
|
||||||
|
- `SysRoleMapper.selectByRoleKey(String)`
|
||||||
|
- `AdminUserRoleMapper.selectByRoleId(Long)`
|
||||||
|
- `AdminUserMapper.selectActiveWithWechatByAdminIds(Collection)`
|
||||||
|
|
||||||
|
旧 stub `when(mapper.selectOne(any(LambdaQueryWrapper.class)))` 在 Mockito 默认配置下不进 default 方法 body, 导致 5 个 `getAdminsByRoleKey_*` case fail。
|
||||||
|
|
||||||
|
### 修复
|
||||||
|
3 个 mapper stub 全切到 default 方法本身, verify never 路径同步切签名。
|
||||||
|
|
||||||
|
### 工单偏差
|
||||||
|
工单原描述说 DesignerProfileServiceTest / DesignerServiceTest 也是同根因。**核实不是**, 这俩 Service 生产代码仍在用 LambdaQueryWrapper, 原 stub 工作正常, 未触碰。
|
||||||
|
|
||||||
|
### 残留另起工单
|
||||||
|
ServiceMonitorServiceTest 2 个 pre-existing failure (L:63, L:102) 与本工单无关, 已起 #1880 跟进。
|
||||||
|
|
||||||
|
## PR #1881 - putWithDeps SMEMBERS 自检 + ERROR stack (Refs #1860 Stage 1)
|
||||||
|
|
||||||
|
### 背景
|
||||||
|
PR #1855 / #1858 banner / dict / featuredReview hotfix 后, `DependencyAwareCacheManager` 反向索引 SADD 在 prod 仍有「总依赖=0, 实际删除=0」现象, 但日志 silent 看不出根因。
|
||||||
|
|
||||||
|
### Stage 1 改动(仅诊断)
|
||||||
|
**不动业务逻辑、不动 MpCacheAspect、不调 invalidateSource 主路径, 仅加日志。**
|
||||||
|
|
||||||
|
1. `putWithDeps` 入口 INFO 日志: key/deps/ttlSec
|
||||||
|
2. `registerDeps` 每个 dep Lua 完成后立即 **SMEMBERS 自检**, INFO 输出 isMember + indexSize
|
||||||
|
3. `invalidateSource` 把成员快照(members=[...])打出来
|
||||||
|
4. 序列化失败 / SET 失败 log.warn → log.error + stack trace
|
||||||
|
|
||||||
|
业务降级语义零变化(仍 return 不抛), 仅日志级别+stack 提级。
|
||||||
|
|
||||||
|
### 后续 Stage 2(待 prod 日志暴露根因)
|
||||||
|
- 看到 `[cache-deps registerDeps OK] isMember=false` → SADD 静默失败, 修 Lua 路径
|
||||||
|
- 看到 `序列化失败` ERROR + stack → 改 `MpCacheAspect` 缓存 result.getData()
|
||||||
|
- mp-service 完全没出现 `[cache-deps putWithDeps 开始]` → 修 aspect 上游
|
||||||
|
|
||||||
|
### 工单状态
|
||||||
|
**#1860 保持 open**, 验收 4 项中第 1 条已勾, 第 3 条「prod 日志总依赖>=1」需 prod 部署后实测才能勾。
|
||||||
|
**#1861 (D5 删 MpCacheEvict 重构) 继续阻塞**至 #1860 完全闭环。
|
||||||
|
|
||||||
|
## 测试
|
||||||
|
|
||||||
|
- PR #1879: `mvn -pl hl-user-service test`, IUT 5 case 全过
|
||||||
|
- PR #1881: `mvn -pl hl-common/hl-common-redis test`, 47/0/0 (新增 4 case)
|
||||||
|
|
||||||
|
## 重启服务
|
||||||
|
|
||||||
|
- `hl-user-service`(测试 stub 改动只影响单测, 但合 dev 后建议 deploy panel 部署一次)
|
||||||
|
- `hl-common-redis` 是公共模块, 实际部署需要 `mp-service` / `user-service` / `product-v2` / `order-v2` / `resource-service` 任何用到 `DependencyAwareCacheManager` 的服务都升级才生效
|
||||||
|
|
||||||
|
## 关联
|
||||||
|
|
||||||
|
- Closes wx/HL #1853 (PR #1879)
|
||||||
|
- Refs wx/HL #1860 Stage 1 (PR #1881, 工单不在本 PR 关闭)
|
||||||
|
- 起 #1880 (ServiceMonitor failure follow-up)
|
||||||
|
- 阻塞 #1861 (D5 重构, 等 #1860 Stage 2)
|
||||||
正在加载...
x
在新工单中引用
屏蔽一个用户