fix: 恢复迁移改为先切 Redis 再迁存量,消除 Snapshot 遗漏 gap

- 先 healthy.Store(true) 再 migrateSessions()
- 先切后迁:新会话立即走 Redis,存量通过 Pipeline 补写
- 迁移失败保持 healthy=true,由下个健康检测周期处理
This commit is contained in:
2026-05-31 11:51:12 +08:00
parent 37c83d4c12
commit dae248590b

View File

@ -51,9 +51,10 @@ func (fs *FallbackStore) healthLoop(interval time.Duration) {
ok := fs.ping()
if ok && !prev {
// Redis 恢复:先迁移内存会话,再切回 Redis
fs.migrateSessions()
// Redis 恢复:先切到 Redis新会话立即走 Redis再迁移内存存量
// 先切后迁Snapshot 和 healthy 切换之间零 gap不存在遗漏
fs.healthy.Store(true)
fs.migrateSessions()
fs.degraded.Store(false)
} else if !ok && prev {
// Redis 掉线,标记降级