在模块教程 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分享库 !
评论已关闭