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.comkajinamit@nttdata.co.jptushar.vitthal.patil@gmail.com

负责人:

Abhishek Kekane

结束 添加周期性任务以清理工作流失败