mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-27 14:13:52 +03:00
Use Get/Set instead of Rename when Regenerate session id (#23975)
Do not use Rename here, because the old sid and new sid may be in different redis cluster slot. Fix #23869
This commit is contained in:
parent
26a0cd7143
commit
97d5ec2aeb
1 changed files with 11 additions and 6 deletions
|
@ -183,16 +183,21 @@ func (p *RedisProvider) Regenerate(oldsid, sid string) (_ session.RawStore, err
|
|||
}
|
||||
}
|
||||
|
||||
if err = p.c.Rename(graceful.GetManager().HammerContext(), poldsid, psid).Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var kv map[interface{}]interface{}
|
||||
kvs, err := p.c.Get(graceful.GetManager().HammerContext(), psid).Result()
|
||||
// do not use Rename here, because the old sid and new sid may be in different redis cluster slot.
|
||||
kvs, err := p.c.Get(graceful.GetManager().HammerContext(), poldsid).Result()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err = p.c.Del(graceful.GetManager().HammerContext(), poldsid).Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err = p.c.Set(graceful.GetManager().HammerContext(), psid, kvs, p.duration).Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var kv map[interface{}]interface{}
|
||||
if len(kvs) == 0 {
|
||||
kv = make(map[interface{}]interface{})
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue