Masakari Spec Lite

请保留此模板部分,并在标记之间添加您自己的副本。每次提交只填写一个精简规范。

<您的规范精简版标题>

链接:

<链接到蓝图。>

问题:

<进行此更改的驱动因素。>

解决方案:

<需要完成的高级描述。例如:“我们需要添加客户端函数 X.Y.Z 以与新的服务器功能 Z 交互”。>

影响:

<所有可能的 *Impact 标志(与提交消息中的相同)或 ‘None’。>

可选 (请删除此行并填写或删除其余内容直到结束):

如何:

<如果需要,比高级概述更详细的技术细节 解决方案。>

替代方案:

<任何可能值得讨论的替代方案。>

时间线:

<完成这项工作所需时间的估计。>

审核人员:

<如果已经同意了该功能的评审人员,请在此处列出他们。>

负责人:

<如果已知,请在此处列出将要进行功能实现的人员。>

模板结束

添加数据库清理支持

链接:

https://blueprints.launchpad.net/masakari/+spec/db-purge-support

问题:

Masakari 目前没有删除通知数据库表中的通知记录的方法。如果数据库中有大量通知,这将减慢数据库搜索速度。 同样,我们可以从其他数据库表中清理记录。

解决方案:

向 masakari-manage 命令添加数据库清理支持,该命令将清理数据库中已删除/未使用的记录。 由于 masakari 没有删除通知 API,因此将根据状态和 updated_at 列清理通知记录。 状态为 finished、ignored 和 failed 的通知将从通知表中清理。 对于其他表,标记为已删除的记录将从表中清理。 将引入两个可选命令行配置选项 ‘age_in_days’ 默认为 30 和 ‘max_rows’ 默认为 -1,以提供操作员在清理记录方面的灵活性。 -1 表示清理命令将删除表中所有符合 ‘age_in_days’ 标准的记录。 如果操作员指定 ‘max_rows’ 大于 0,则将在一次操作中从整个数据库(而不是每个表)中清理那么多记录。

对于通知表,由于我们没有 deleted_at 值;‘age_in_days’ 将根据 updated_at 值计算。 例如,如果在清理时指定 ‘age_in_days’ 为 10,则状态为 finished、ignored 和 failed 且更新时间早于 10 天的通知将有资格进行清理。 对于其他表,删除时间早于 10 天的记录将有资格进行清理。

示例:$ masakari-manage db purge 这将清理每个表中已删除或更新时间早于 30 天的记录。

$ masakari-manage db purge –age_in_days 60 这将清理每个表中已删除或更新时间早于 60 天的记录。

$ masakari-manage db purge –max-rows 50 这将从整个数据库中清理总共 50 条已删除或更新时间早于 30 天的记录。

$ masakari-manage db purge –age_in_days 60 –max-rows 50 这将从整个数据库中清理 50 条已删除或更新时间早于 60 天的记录。

替代方案:

添加新的 delete_all api,该 api 将具有状态和 age_in_days 作为输入参数来删除通知。 在这种情况下,用户可以将输入通知状态指定为 ignored、failed 或 finished,并根据 age_in_days 值从通知表中删除这些记录。 例如,如果用户指定状态为 ‘finished’ 且 age_in_days 为 10,则状态为 ‘finished’ 且更新时间早于 10 天的通知将从通知表中删除。

优点:1. 操作员可以灵活地决定需要从通知表中删除哪些通知。

缺点:1. 在这种情况下,只有通知记录将被删除,其他表中的记录将保持不变。

影响:

时间线:

预计将在 Pike 时间范围内合并。

审核人员:

sam47priya@gmail.com, sagaray@nttdata.co.jp, tushar.vitthal.patil@gmail.com

负责人:

Pooja Jadhav

添加数据库清理支持