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