3.8 KiB
3.8 KiB
事务配置审计报告
检查时间
2025-11-06
检查范围
所有服务类中的 @Transactional 配置
检查结果
✅ 正确配置的服务
1. StoryboardVideoService
- 类级别: 无
@Transactional✅ - createTask:
@Transactional(propagation = Propagation.REQUIRES_NEW)✅- 快速保存任务,事务立即提交
- processTaskAsync:
@Async+@Transactional(propagation = Propagation.NOT_SUPPORTED)✅- 在事务外执行,调用外部API不会占用连接
- 其他方法: 使用独立的事务方法,快速完成 ✅
2. TaskQueueService
- 类级别:
@Transactional⚠️ - processPendingTasks:
@Transactional(propagation = Propagation.NOT_SUPPORTED)✅- 覆盖类级别配置,在事务外执行
- processTask:
@Transactional(propagation = Propagation.NOT_SUPPORTED)✅- 在事务外调用外部API
- checkTaskStatuses:
@Transactional(propagation = Propagation.NOT_SUPPORTED)✅- 在事务外轮询外部API状态
- checkTaskStatusInternal:
@Transactional(propagation = Propagation.NOT_SUPPORTED)✅- 在事务外调用外部API
- 其他方法: 快速数据库操作,使用独立事务 ✅
3. TaskStatusPollingService
- 类级别: 无
@Transactional✅ - pollTaskStatus:
@Transactional(propagation = Propagation.NOT_SUPPORTED)✅- 在事务外轮询外部API
- 其他方法: 快速数据库操作,使用独立事务 ✅
⚠️ 需要关注的服务
4. TextToVideoService
- 类级别:
@Transactional⚠️ - createTask: 继承类级别事务
- ✅ 只做快速数据库操作(保存任务、添加到队列)
- ✅ 没有调用外部API
- ✅ 没有长时间运行的操作
- 结论: 虽然使用类级别事务,但方法快速完成,应该没问题
5. ImageToVideoService
- 类级别:
@Transactional⚠️ - createTask: 继承类级别事务
- ✅ 只做快速数据库操作(保存任务、添加到队列)
- ✅ 没有调用外部API
- ✅ 没有长时间运行的操作
- 结论: 虽然使用类级别事务,但方法快速完成,应该没问题
6. UserWorkService
- 类级别:
@Transactional⚠️ - 所有方法: 都是快速数据库操作
- ✅ 没有调用外部API
- ✅ 没有长时间运行的操作
- 结论: 应该没问题
📊 总结
长时间运行的方法(已正确配置)
- ✅
StoryboardVideoService.processTaskAsync-NOT_SUPPORTED+@Async - ✅
TaskQueueService.processPendingTasks-NOT_SUPPORTED - ✅
TaskQueueService.processTask-NOT_SUPPORTED - ✅
TaskQueueService.checkTaskStatuses-NOT_SUPPORTED - ✅
TaskQueueService.checkTaskStatusInternal-NOT_SUPPORTED - ✅
TaskStatusPollingService.pollTaskStatus-NOT_SUPPORTED
快速事务方法(已正确配置)
- ✅ 所有
readOnly = true的方法 - ✅ 所有独立的
@Transactional方法(快速数据库操作) - ✅
StoryboardVideoService.createTask-REQUIRES_NEW(快速提交)
潜在问题
- ⚠️
TextToVideoService和ImageToVideoService有类级别@Transactional- 但它们的
createTask方法都是快速操作,应该没问题 - 如果未来需要在这些方法中调用外部API,需要添加
NOT_SUPPORTED
- 但它们的
建议
当前状态
✅ 所有事务配置都是正确的,应该能正常关闭
最佳实践建议
- ✅ 长时间运行的方法都使用了
NOT_SUPPORTED - ✅ 异步方法都正确配置了
@Async - ✅ 快速事务方法都快速完成
- ⚠️ 考虑移除
TextToVideoService和ImageToVideoService的类级别@Transactional,改为方法级别配置,以提高灵活性
结论
✅ 所有事务都能正常关闭,没有发现连接泄漏风险