fix(log): address remaining CodeRabbit suggestions for log database switch and migrations

This commit is contained in:
ryan
2026-08-08 20:36:04 +08:00
parent a6fc2b7737
commit 7d93d3d2a1
5 changed files with 21 additions and 8 deletions
@@ -88,12 +88,7 @@ func (h *LogDBSwitchHandler) Execute(ctx context.Context, payload []byte) (*task
}
task.AppendLog(ctx, "开始切换日志数据库:%s -> %s", source, p.Target)
// 冻结前先排空在途批次(chwriter + 用户访问日志 writer),避免迁移期间积压丢失;
// 只等 flush 完成,不停止 writer(置位后由 ensureWritable 拒绝新写入)。
if err := drainLogWriters(ctx); err != nil {
return nil, fmt.Errorf("排空日志写入队列失败: %w", err)
}
// 设置迁移冻结标记(置位后由 ensureWritable 拒绝新写入)。
if err := setMigrationFlag(ctx, "migrating"); err != nil {
return nil, err
}
@@ -104,6 +99,12 @@ func (h *LogDBSwitchHandler) Execute(ctx context.Context, payload []byte) (*task
}
}()
// 冻结标记置位后再排空在途批次(chwriter + 用户访问日志 writer),
// 保证排空完成后不再有新批次进入源库。
if err := drainLogWriters(ctx); err != nil {
return nil, fmt.Errorf("排空日志写入队列失败: %w", err)
}
src, err := logstore.Active(ctx)
if err != nil {
return nil, err