在模块教程 KernelSU 解决方案中,我们讨论了关于位置、说明、复现、期望和备注等方面的问题。具体来说,位置在 backend/src/schedules.rs 的 ScheduleService::run 函数中。注释中提到当队列满时会重试同一个槽位,但实际实现是直接修改 next_run_at。这导致槽位时间 due 被替换为 now + BUSY_RETRY_MS,随后 following() 函数会以新值为起点,原网格被平移,request_key(包含 due)也随之变化,不再是同一个槽位。复现这个问题的方式是首次在 10:00 执行,每 60 分钟重复一次。在 10:00 时如果遇到队列满,实际会在 10:01 才执行,导致后续的执行时间变成 11:01、12:01 等。期望的行为是网格应保持 10:00、11:00、12:00 的执行时间,仅当次任务延后。此外,备注中提到 Busy 分支没有测试覆盖,修复时建议一并补上。
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议。转载请注明来自KernelSU分享库 !
评论已关闭