@@ -135,10 +135,12 @@ func (p *RedisProvider) Init(maxlifetime int64, configs string) (err error) {
135
135
// Read returns raw session store by session ID.
136
136
func (p * RedisProvider ) Read (sid string ) (session.RawStore , error ) {
137
137
psid := p .prefix + sid
138
- if ! p .Exist (sid ) {
138
+ if exist , err := p .Exist (sid ); err == nil && ! exist {
139
139
if err := p .c .Set (graceful .GetManager ().HammerContext (), psid , "" , p .duration ).Err (); err != nil {
140
140
return nil , err
141
141
}
142
+ } else if err != nil {
143
+ return nil , err
142
144
}
143
145
144
146
var kv map [any ]any
@@ -159,9 +161,9 @@ func (p *RedisProvider) Read(sid string) (session.RawStore, error) {
159
161
}
160
162
161
163
// Exist returns true if session with given ID exists.
162
- func (p * RedisProvider ) Exist (sid string ) bool {
164
+ func (p * RedisProvider ) Exist (sid string ) ( bool , error ) {
163
165
v , err := p .c .Exists (graceful .GetManager ().HammerContext (), p .prefix + sid ).Result ()
164
- return err == nil && v == 1
166
+ return err == nil && v == 1 , err
165
167
}
166
168
167
169
// Destroy deletes a session by session ID.
@@ -174,13 +176,18 @@ func (p *RedisProvider) Regenerate(oldsid, sid string) (_ session.RawStore, err
174
176
poldsid := p .prefix + oldsid
175
177
psid := p .prefix + sid
176
178
177
- if p .Exist (sid ) {
179
+ if exist , err := p .Exist (sid ); err != nil {
180
+ return nil , err
181
+ } else if exist {
178
182
return nil , fmt .Errorf ("new sid '%s' already exists" , sid )
179
- } else if ! p .Exist (oldsid ) {
183
+ }
184
+ if exist , err := p .Exist (oldsid ); err == nil && ! exist {
180
185
// Make a fake old session.
181
- if err = p .c .Set (graceful .GetManager ().HammerContext (), poldsid , "" , p .duration ).Err (); err != nil {
186
+ if err : = p .c .Set (graceful .GetManager ().HammerContext (), poldsid , "" , p .duration ).Err (); err != nil {
182
187
return nil , err
183
188
}
189
+ } else if err != nil {
190
+ return nil , err
184
191
}
185
192
186
193
// do not use Rename here, because the old sid and new sid may be in different redis cluster slot.
@@ -211,12 +218,9 @@ func (p *RedisProvider) Regenerate(oldsid, sid string) (_ session.RawStore, err
211
218
}
212
219
213
220
// Count counts and returns number of sessions.
214
- func (p * RedisProvider ) Count () int {
221
+ func (p * RedisProvider ) Count () ( int , error ) {
215
222
size , err := p .c .DBSize (graceful .GetManager ().HammerContext ()).Result ()
216
- if err != nil {
217
- return 0
218
- }
219
- return int (size )
223
+ return int (size ), err
220
224
}
221
225
222
226
// GC calls GC to clean expired sessions.
0 commit comments