Skip to content

[Optimize/优化]: 存储策略清理逻辑和交互问题 #1618

@nb5p

Description

@nb5p

Pre-submission Checklist / 提交前检查

  • I have searched the existing issues and this optimization has not been suggested / 我已搜索现有 issues,此优化建议尚未被提出
  • I have read the documentation / 我已阅读文档

FAQ Check / FAQ 检查

  • I have checked the FAQ and this optimization has not been suggested there / 我已查阅 FAQ,此优化建议未被提及

Current State / 当前状态

如果用量日志的清理周期为0,这个 0 表示用不清理。但点击立即清理,则会清理全部用量日志,表示一点不留,复用同一个数值,逻辑存在问题。
我当时的需求只是因为数据库太大了,想着手动改短请求日志保留天数,其实等到 cron 到期也能自动清理,但是数据库过大导致的启动时间问题,让我选择了立即执行清理,丢失了全部的用量日志。

Problem or Bottleneck / 问题或瓶颈

用量清除函数里,一个变量有两个含义。

func (w *Worker) cleanupUsageLogs(ctx context.Context, cleanupDays int, manual bool) error {
if !manual && cleanupDays <= 0 {
return nil
}
cutoffTime := time.Now().AddDate(0, 0, -cleanupDays)
if manual && cleanupDays == 0 {
cutoffTime = time.Now()
}

BTW,感觉这里的开关逻辑也有问题,这里关闭后,手动点击立即清理,也不清理了。
for _, option := range policy.CleanupOptions {
if option.Enabled {

Proposed Optimization / 优化方案

  • 建议优化手动删除代码逻辑,不要使用相同的cleanupDays,弹窗UI上新增一个输入框,让用户输入。
  • 日志清理周期禁止设置成 0,如果用户不想清理,就应该关闭开关。
  • CleanupOptions 的控制逻辑只关联自动删除,不影响手动删除。
  • 手动删除增加 dry-run,弹窗显示"将删除 X 条,时间范围是XX。"。

Expected Benefit / 期望收益

可以防止误删。

Optimization Type / 优化类型

UI / UI

Affected Area / 影响区域

Logging / Monitoring / 日志/监控

Additional Context / 其他补充信息

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions