Masakari Spec Lite¶
请保留此模板部分,并在标记之间添加您自己的副本。每次提交只填写一个精简规范。
<您的规范精简版标题>¶
- 链接:
<链接到蓝图。>
- 问题:
<进行此更改的驱动因素。>
- 解决方案:
<需要完成的高级描述。例如:“我们需要添加客户端函数 X.Y.Z 以与新的服务器功能 Z 交互”。>
- 影响:
<所有可能的 *Impact 标志(与提交消息中的相同)或 ‘None’。>
可选 (请删除此行并填写或删除其余内容直到结束):¶
- 如何:
<如果需要,比高级概述更详细的技术细节 解决方案。>
- 替代方案:
<任何可能值得讨论的替代方案。>
- 时间线:
<完成这项工作所需时间的估计。>
- 审核人员:
<如果已经同意了该功能的评审人员,请在此处列出他们。>
- 负责人:
<如果已知,请在此处列出将要进行功能实现的人员。>
模板结束¶
添加周期性任务以清理工作流失败¶
- 链接:
https://blueprints.launchpad.net/masakari/+spec/add-periodic-tasks
- 问题:
由于某些未知原因,一些通知可能会进入“错误”状态,或者可能永远停留在“新建”状态。应该有一种方法来检索这些通知并完成处理。
- 解决方案:
添加一个周期性任务“process_unfinished_notifications”,它将以由新的配置选项“process_unfinished_notifications_interval”(以秒为单位)定义的规则间隔执行。此选项的默认值为 120 秒,但操作员可以根据需要设置此间隔值。在此周期性任务内部,它将检索所有处于“错误”或“新建”状态的通知,然后执行恢复操作工作流来处理所有这些通知。处于“新建”状态的通知将基于新的配置选项“retry_notification_new_status_interval”进行选取。此选项的默认值为 60 秒,但操作员可以根据需要设置此间隔值。每个通知都有“generated_time”字段,如果此时间 + retry_notification_new_status_interval 值(以秒为单位)大于或等于当前系统时间,则此周期性任务将选取所有处于“新建”状态的通知。此外,处于“错误”状态的通知也将被选取。
让我们了解不同状态下通知的转换状态(成功情况):通知当前状态 错误 -> 运行中 -> 完成 通知当前状态 新建 -> 运行中 -> 完成 如果工作流执行失败,则通知的转换状态将是:通知当前状态 错误 -> 运行中 -> 失败 通知当前状态 新建 -> 运行中 -> 失败
注意:一个重要的注意事项是,如果原始通知状态为“新建”,则如果周期性任务在处理它时工作流失败,则它将不会再次重试。其状态将直接设置为“失败”。操作员需要手动对所有处于“失败”状态的通知采取纠正措施。
- 替代方案:
添加两个周期性任务“process_error_notifications”和“process_queued_notifications”来处理处于“错误”和“新建”状态的通知。这些周期性任务将以由两个新的配置选项“process_error_notification_interval”和“process_queued_notifications_interval”定义的规则间隔调用。检索处于“错误”和“新建”状态的通知的逻辑与上述解决方案完全相同。唯一的区别在于其完成后的通知状态,如下所述。
不同状态下通知的转换状态(成功情况)。通知当前状态 错误 (process_error_notifications) -> 运行中 -> 完成 通知当前状态 新建 (process_queued_notifications) -> 运行中 -> 完成
如果工作流执行失败,则通知的转换状态将是:通知当前状态 错误 (process_error_notifications) -> 运行中 -> 失败 通知当前状态 新建 (process_queued_notifications) -> 运行中 -> 错误 这意味着该通知将在下一次“process_error_notifications”周期性任务的周期中再次有资格进行重新处理。
- 影响:
无
- 时间线:
预计将在 Ocata 时间范围内合并。
- 审核人员:
sam47priya@gmail.com,kajinamit@nttdata.co.jp,tushar.vitthal.patil@gmail.com
- 负责人:
Abhishek Kekane