Pre-submission Checklist / 提交前检查
FAQ Check / 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
Pre-submission Checklist / 提交前检查
FAQ Check / FAQ 检查
Current State / 当前状态
如果用量日志的清理周期为0,这个 0 表示用不清理。但点击立即清理,则会清理全部用量日志,表示一点不留,复用同一个数值,逻辑存在问题。
我当时的需求只是因为数据库太大了,想着手动改短请求日志保留天数,其实等到 cron 到期也能自动清理,但是数据库过大导致的启动时间问题,让我选择了立即执行清理,丢失了全部的用量日志。
Problem or Bottleneck / 问题或瓶颈
用量清除函数里,一个变量有两个含义。
axonhub/internal/server/gc/gc.go
Lines 389 to 397 in e81da01
BTW,感觉这里的开关逻辑也有问题,这里关闭后,手动点击立即清理,也不清理了。
axonhub/internal/server/gc/gc.go
Lines 111 to 112 in e81da01
Proposed Optimization / 优化方案
Expected Benefit / 期望收益
可以防止误删。
Optimization Type / 优化类型
UI / UI
Affected Area / 影响区域
Logging / Monitoring / 日志/监控
Additional Context / 其他补充信息
No response