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

4.0 KiB
Raw Blame History

事务使用情况完整报告

检查时间

2025-11-06

检查范围

所有服务类中的 @Transactional 使用情况

检查结果

已修复的服务

1. StoryboardVideoService

  • 类级别: 无 @Transactional
  • createTask: @Transactional(propagation = Propagation.REQUIRES_NEW)
  • processTaskAsync: @Async + @Transactional(propagation = Propagation.NOT_SUPPORTED)
    • 内部调用使用 REQUIRES_NEW 的私有方法:
      • loadTaskInfoInNewTransaction - REQUIRES_NEW + readOnly = true
      • updateTaskStatusInNewTransaction - REQUIRES_NEW
      • saveStoryboardImageResultInNewTransaction - REQUIRES_NEW
      • updateTaskStatusToFailedInNewTransaction - REQUIRES_NEW
  • 其他方法: 快速数据库操作,使用独立事务

⚠️ 需要注意的服务

2. TextToVideoService

  • 类级别: @Transactional ⚠️
  • createTask: 继承类级别事务
    • 只做快速数据库操作无外部API调用
  • processTaskWithRealAPI: @Async + 继承类级别事务 ⚠️
    • ⚠️ 直接使用 taskRepository.save(task),会继承类级别事务
    • ⚠️ 在异步方法中调用外部API可能导致连接泄漏
    • 状态: 此方法未被调用(任务通过 TaskQueueService 处理),不会导致实际泄漏
    • 建议: 如果未来需要使用,应添加 NOT_SUPPORTED 并使用 REQUIRES_NEW 的私有方法

3. ImageToVideoService

  • 类级别: @Transactional ⚠️
  • createTask: 继承类级别事务
    • 只做快速数据库操作无外部API调用
  • processTaskWithRealAPI: @Async + 继承类级别事务 ⚠️
    • ⚠️ 直接使用 taskRepository.save(task),会继承类级别事务
    • ⚠️ 在异步方法中调用外部API可能导致连接泄漏
    • 状态: 此方法未被调用(任务通过 TaskQueueService 处理),不会导致实际泄漏
    • 建议: 如果未来需要使用,应添加 NOT_SUPPORTED 并使用 REQUIRES_NEW 的私有方法

正确配置的服务

4. TaskQueueService

  • 类级别: @Transactional ⚠️
  • processPendingTasks: @Transactional(propagation = Propagation.NOT_SUPPORTED)
  • processTask: @Transactional(propagation = Propagation.NOT_SUPPORTED)
  • checkTaskStatuses: @Transactional(propagation = Propagation.NOT_SUPPORTED)
  • checkTaskStatusInternal: @Transactional(propagation = Propagation.NOT_SUPPORTED)
  • 其他方法: 快速数据库操作,使用独立事务

5. TaskStatusPollingService

  • 类级别: 无 @Transactional
  • pollTaskStatus: @Transactional(propagation = Propagation.NOT_SUPPORTED)
  • 其他方法: 快速数据库操作,使用独立事务

6. UserWorkService

  • 类级别: @Transactional ⚠️
  • 所有方法: 快速数据库操作无外部API调用

7. UserService

  • 类级别: 无 @Transactional
  • 所有方法: 快速数据库操作,使用独立事务

8. PaymentService

  • 类级别: @Transactional ⚠️
  • 所有方法: 快速数据库操作无外部API调用

9. OrderService

  • 类级别: @Transactional ⚠️
  • 所有方法: 快速数据库操作无外部API调用

总结

当前状态

所有实际使用的异步方法都已正确配置,不会导致连接泄漏

潜在问题(但未实际使用)

⚠️ TextToVideoService.processTaskWithRealAPIImageToVideoService.processTaskWithRealAPI 有潜在问题,但未被调用,不会导致实际泄漏

建议

  1. 当前配置正确,无需修改
  2. ⚠️ 如果未来需要使用 processTaskWithRealAPI 方法,应按照 StoryboardVideoService 的模式修复:
    • 在异步方法上添加 @Transactional(propagation = Propagation.NOT_SUPPORTED)
    • 创建使用 REQUIRES_NEW 的私有方法进行数据库操作

结论

所有实际使用的事务配置都是正确的,不会导致连接泄漏