现象
文档 ETL 失败后不会重试。异步方法只执行一次,异常直接冒到 SimpleAsyncUncaughtExceptionHandler,
@Recover 从不被调用,文档状态永久停留在 PROCESSING,直到下次应用启动才被
StaleProcessingDocumentRecoveryRunner 回收成 FAILED。
复现
- 正常启动后端(profile = local)
- 上传一个会导致解析失败的文档
- 观察控制台日志与
documents 表的 status
实测结果
日志:
开始异步执行文档ETL 只出现 1 次
- 方法开始后 0.55 秒异常就冒到
SimpleAsyncUncaughtExceptionHandler
(若重试生效应该需要6 秒)
数据库:
status一直卡在 PROCESSING
现象
文档 ETL 失败后不会重试。异步方法只执行一次,异常直接冒到
SimpleAsyncUncaughtExceptionHandler,@Recover从不被调用,文档状态永久停留在PROCESSING,直到下次应用启动才被StaleProcessingDocumentRecoveryRunner回收成FAILED。复现
documents表的status实测结果
日志:
开始异步执行文档ETL只出现 1 次SimpleAsyncUncaughtExceptionHandler(若重试生效应该需要6 秒)
数据库:
status一直卡在 PROCESSING