Files
AIGC/demo/TRANSACTION_AUDIT.md
AIGC Developer 1e71ae6a26 feat: 系统优化和功能完善
主要更新:
- 调整并发配置为50人(数据库连接池30,Tomcat线程150,异步线程池5/20)
- 实现无界阻塞队列(LinkedBlockingQueue)任务处理
- 实现分镜视频保存功能(保存到uploads目录)
- 统一管理页面导航栏和右上角样式
- 添加日活用户统计功能
- 优化视频拼接和保存逻辑
- 添加部署文档和快速部署指南
- 更新.gitignore排除敏感配置文件
2025-11-07 19:09:50 +08:00

3.8 KiB
Raw Blame History

事务配置审计报告

检查时间

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
    • 没有长时间运行的操作
    • 结论: 应该没问题

📊 总结

长时间运行的方法(已正确配置)

  1. StoryboardVideoService.processTaskAsync - NOT_SUPPORTED + @Async
  2. TaskQueueService.processPendingTasks - NOT_SUPPORTED
  3. TaskQueueService.processTask - NOT_SUPPORTED
  4. TaskQueueService.checkTaskStatuses - NOT_SUPPORTED
  5. TaskQueueService.checkTaskStatusInternal - NOT_SUPPORTED
  6. TaskStatusPollingService.pollTaskStatus - NOT_SUPPORTED

快速事务方法(已正确配置)

  • 所有 readOnly = true 的方法
  • 所有独立的 @Transactional 方法(快速数据库操作)
  • StoryboardVideoService.createTask - REQUIRES_NEW(快速提交)

潜在问题

  • ⚠️ TextToVideoServiceImageToVideoService 有类级别 @Transactional
    • 但它们的 createTask 方法都是快速操作,应该没问题
    • 如果未来需要在这些方法中调用外部API需要添加 NOT_SUPPORTED

建议

当前状态

所有事务配置都是正确的,应该能正常关闭

最佳实践建议

  1. 长时间运行的方法都使用了 NOT_SUPPORTED
  2. 异步方法都正确配置了 @Async
  3. 快速事务方法都快速完成
  4. ⚠️ 考虑移除 TextToVideoServiceImageToVideoService 的类级别 @Transactional,改为方法级别配置,以提高灵活性

结论

所有事务都能正常关闭,没有发现连接泄漏风险